zoukankan      html  css  js  c++  java
  • XML的学习

    • 什么是XML
      概念:可扩展标记语言(可扩展:可以自定义标签)

    • XML和HTML的区别
      1.XML的标签是自定义的,而HTML的标签是有规则的
      2.XML的语法严格,而HTML的语法相对松散(体现在浏览器上)
      3.XML用于存储数据,而HTML用于展示数据

    • XML的功能
      1.存储数据
        1.作为配置文件
        2.可在网络中传输

    • XML的语法
      1.XML文件的文件后缀为.xml
      2.第一行必须被定义为文档声明【最顶上】
      3.XML文档有且仅有一个根标签【总的标签】
      4.属性必须用引号括起(单双皆可)【<use id='1'>】
      5.标签必须闭合(自闭也可)
      6.XML的标签名区分大小写

    • XML的组成部分
      1.文档声明
        1.格式
        <?xml 属性列表?>
        2.属性列表
        1.version:版本号   一般都是version=‘1.0’(这个必须要写,且1.0是主流版本)
        2.encordin:编码方式  告知解析引擎当前文档使用的字符集  encording='GBK'
        3.standalone 是否独立 yes:不依赖与其他文件  no:反之

      2.指令  
        用的比较少,用于结合css

      3.标签:
        自定义名称
        规则:包含字母数字标点,不能以数字标点开始,同时不能以字母xml(大小写变动也不可以)开始,名称不能包括空格

      4.属性
          id属性值唯一

      5.文本
        CDATA区:在该区中数据可以原样显示(编码时,有些字符需要用转义字符)
        CDATA<! 【CDATA 【~~~~(代码)~~】】>
      <?xml version="1.0" encoding="UTF-8"?>
      
      <!--<?xml-stylesheet type="text/css" href="a.css" ?>-->
      
      -<users>
      
      
      -<user id="1">
      
      <name>张三</name>
      
      <age>23</age>
      
      <gender>male</gender>
      
      <br/>
      
      </user>
      
      
      -<user id="2">
      
      <name>lisi</name>
      
      <age>24</age>
      
      <gender>female</gender>
      
      
      -<code>
      
      <!-- if(a &lt; b &amp;&amp; a &gt; c){}-->
      
      
      -<![CDATA[
                      if(a < b && a > c) {}
                  ]]]>
      </code>
      
      </user>
      
      </users>
      <?xml version="1.0" encoding="UTF-8"?>
      
      -<students>
      
      
      -<student number="heima_0001">
      
      
      -<name id="itcast">
      
      <xing></xing>
      
      <ming></ming>
      
      </name>
      
      <age>18</age>
      
      <sex>male</sex>
      
      </student>
      
      
      -<student number="heima_0002">
      
      <name>jack</name>
      
      <age>18</age>
      
      <sex>female</sex>
      
      </student>
      
      </students>


    • 约束
      1.说明文档
        规定xml文档的书写规则
        软件-->编写-->约束文档<--阅读<--程序员
      2.种类
        1.DTD    简单
                  * DTD:
                      * 引入dtd文档到xml文档中
                          * 内部dtd:将约束规则定义在xml文档中
                          * 外部dtd:将约束的规则定义在外部的dtd文件中
                              * 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
                              * 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

        2.Scheme    复杂
      * 引入:
                          1.填写xml文档的根元素
                          2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                          3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
                          4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml" 
      
                      <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                          xmlns="http://www.itcast.cn/xml"
                          xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">
          
          
    • 解析
      操作XML文档,将文档中的数据读到内存中

      解析方式
      1.DOM:将标记语言文档一次加载进内存,在内存中形成DOM树
        优点:操作方便,可以对文档进行CRUD的所有操作
        缺点: 消耗内存较大
      2.SAX:逐行读取,基于事件驱动(读一行删一行)
        优点:不占内存
        缺点:不能增删改,只能读取

    • XML常见的解析器
      1.JAXP:支持DOM和SAX思想
      2.DOM4J:--------(DOM的)
      3.JSoup
        入门
          步骤:
          1.导入jar包
          2.获取document对象
          3.获取对应标签Element对象
          4.获取数据
      * 代码:
                       //2.1获取student.xml的path
                      String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
                      //2.2解析xml文档,加载文档进内存,获取dom树--->Document
                      Document document = Jsoup.parse(new File(path), "utf-8");
                      //3.获取元素对象 Element
                      Elements elements = document.getElementsByTag("name");
      /
                      System.out.println(elements.size());
                      //3.1获取第一个name的Element对象
                      Element element = elements.get(0);
                      //3.2获取数据
                      String name = element.text();
                      System.out.println(name);


    • 对象的使用
      1. Jsoup:工具类,可以解析html或xml文档,返回Document
                      * parse:解析html或xml文档,返回Document
                          * parse​(File in, String charsetName):解析xml或html文件的。
                          * parse​(String html):解析xml或html字符串
                          * parse​(URL url(网址), int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
                  2. Document:文档对象。代表内存中的dom树
                      * 获取Element对象
                          * getElementById​(String id):根据id属性值获取唯一的element对象
                          * getElementsByTag​(String tagName):根据标签名称获取元素对象集合
                          * getElementsByAttribute​(String key):根据属性名称获取元素对象集合
                          * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
                  3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
                  4. Element:元素对象
                      1. 获取子元素对象
                          * getElementById​(String id):根据id属性值获取唯一的element对象
                          * getElementsByTag​(String tagName):根据标签名称获取元素对象集合
                          * getElementsByAttribute​(String key):根据属性名称获取元素对象集合
                          * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
      
                      2. 获取属性值
                          * String attr(String key):根据属性名称获取属性值
                      3. 获取文本内容
                          * String text():获取文本内容
                          * String html():获取标签体的所有内容(包括字标签的字符串内容)
                  5. Node:节点对象
                      * 是Document和Element的父类
    • 快捷方式的使用
      * 快捷查询方式:
                  1. selector:选择器
                      * 使用的方法:Elements    select​(String cssQuery)
                          * 语法:参考Selector类中定义的语法
                  2. XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
                      * 使用Jsoup的Xpath需要额外导入jar包。
                      * 查询w3cshool参考手册,使用xpath的语法完成查询
                      * 代码:
                          //1.获取student.xml的path
                          String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
                          //2.获取Document对象
                          Document document = Jsoup.parse(new File(path), "utf-8");
                  
                          //3.根据document对象,创建JXDocument对象
                          JXDocument jxDocument = new JXDocument(document);
                  
                          //4.结合xpath语法查询
                          //4.1查询所有student标签
                          List<JXNode> jxNodes = jxDocument.selN("//student");
                          for (JXNode jxNode : jxNodes) {
                              System.out.println(jxNode);
                          }
                  
                          System.out.println("--------------------");
                  
                          //4.2查询所有student标签下的name标签
                          List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
                          for (JXNode jxNode : jxNodes2) {
                              System.out.println(jxNode);
                          }
                  
                          System.out.println("--------------------");
                  
                          //4.3查询student标签下带有id属性的name标签
                          List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
                          for (JXNode jxNode : jxNodes3) {
                              System.out.println(jxNode);
                          }
                          System.out.println("--------------------");
                          //4.4查询student标签下带有id属性的name标签 并且id属性值为itcast
                  
                          List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
                          for (JXNode jxNode : jxNodes4) {
                              System.out.println(jxNode);
                          }
  • 相关阅读:
    闭包问题小总结
    git常用命令总结
    数组对象方法的使用
    JS截取URL参数
    CSS清除浮动&内容居中&文字溢出
    网址大全
    any more
    下载网页视频
    下载无损音乐
    "前端" 宝藏网站
  • 原文地址:https://www.cnblogs.com/YanZhuDL/p/11528925.html
Copyright © 2011-2022 走看看