什么是XML-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)什么是XML,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)公司是專業(yè)的婁煩網(wǎng)站建設(shè)公司,婁煩接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行婁煩網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

  1、XML : extensible markup language 可擴(kuò)展標(biāo)記語(yǔ)言 version="1.0"

  • 可擴(kuò)展:所有的標(biāo)簽都是自定義的

  • 功能:數(shù)據(jù)存儲(chǔ)

    • 配置文件

    • 數(shù)據(jù)傳輸

  • html 與 xml 區(qū)別

    • HTML語(yǔ)法松散,xml語(yǔ)法嚴(yán)格

    • html做頁(yè)面展示,xml做數(shù)據(jù)存儲(chǔ)

    • Html所有標(biāo)簽都是預(yù)定義的,xml所有標(biāo)簽都是自定義的

2、xml語(yǔ)法:

  • 文檔聲明

    • version 版本號(hào) 固定值1.0

    • encoding 指定文檔的碼表 默認(rèn)值為iso-8859-1

    • standalone 指定文檔是否獨(dú)立 yes 或 no

    • 必須寫(xiě)在xml文檔的第一行

    • 寫(xiě)法:<?xml version = "1.0"?>

    • 屬性

  • 元素 xml文檔中的標(biāo)簽

    • 元素名稱區(qū)分大小寫(xiě)

    • 數(shù)字不能開(kāi)頭

    • 文檔中必須有且只能有一個(gè)根元素

    • 元素需要正確閉合 <body></body> <br/>

    • 元素需要正確嵌套

    • 元素名稱要遵守

  • 文本

    • <!CDATA[數(shù)據(jù)內(nèi)容]>

    • 轉(zhuǎn)義字符 &gt;

    • CDATA 里邊的數(shù)據(jù)會(huì)原樣顯示

  • 屬性

    • 屬性值必須用引號(hào)引起來(lái),單雙引號(hào)都行

  • 注釋

    • <!-- -->

  • 處理指令:現(xiàn)在基本不用

    • <?xml-stylesheet type="text/css" href="1.css"?>

3、XML約束

  • 約束就是xml的書(shū)寫(xiě)規(guī)則

  • 約束的分類:

    • 導(dǎo)入xsd約束文檔

    • 編寫(xiě)根標(biāo)簽

    • 引入實(shí)例名稱空間 xmlns:xsi="www.w3.org/2001/XMLSchema-instance"

    • 引入名稱空間 xsi:schemaLocation="www.itcast.cn/xml student.xsd"

    • 引入默認(rèn)的名稱空間

    • student.xsd

    • student.xml

    • <?xml version="1.0"?>
      <xsd:schema xmlns="www.itheima.cn/xml"
              xmlns:xsd="www.w3.org/2001/XMLSchema"
              targetNamespace="www.itheima.cn/xml" elementFormDefault="qualified">
          <xsd:element name="students" type="studentsType"/>
          <xsd:complexType name="studentsType">
              <xsd:sequence>
                  <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
              </xsd:sequence>
          </xsd:complexType>
          <xsd:complexType name="studentType">
              <xsd:sequence>
                  <xsd:element name="name" type="xsd:string"/>
                  <xsd:element name="age" type="ageType" />
                  <xsd:element name="sex" type="sexType" />
              </xsd:sequence>
              <xsd:attribute name="number" type="numberType" use="required"/>
          </xsd:complexType>
          <xsd:simpleType name="sexType">
              <xsd:restriction base="xsd:string">
                  <xsd:enumeration value="male"/>
                  <xsd:enumeration value="female"/>
              </xsd:restriction>
          </xsd:simpleType>
          <xsd:simpleType name="ageType">
              <xsd:restriction base="xsd:integer">
                  <xsd:minInclusive value="0"/>
                  <xsd:maxInclusive value="256"/>
              </xsd:restriction>
          </xsd:simpleType>
          <xsd:simpleType name="numberType">
              <xsd:restriction base="xsd:string">
                  <xsd:pattern value="itheima_\d{4}"/>
              </xsd:restriction>
          </xsd:simpleType>
      </xsd:schema>
      <?xml version="1.0" encoding="UTF-8" ?>
    • <!--

    • 1、編寫(xiě)根標(biāo)簽

    • 2、引入實(shí)例名稱空間 xmlns:xsi="www.w3.org/2001/XMLSchema-instance"

    • 3、引入名稱空間 xsi:schemaLocation="www.itcast.cn/xml student.xsd"

    • 4、引入默認(rèn)的名稱空間

    • -->

    • <students
          xmlns="www.itheima.cn/xml"
          xsi:schemaLocation="www.itheima.cn/xml student.xsd"
          xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
      >
          <student number="itheima_1001">
              <name>asfd</name>
              <age>12</age>
              <sex>male</sex>
          </student>
      </students>
      <students
          xmlns:itheima="www.itheima.cn/xml"
          xsi:schemaLocation="www.itheima.cn/xml student.xsd"
          xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
      >
          <itheima:student number="itheima_1001">
              <itheima:name>asfd</itheima:name>
              <itheima:age>12</itheima:age>
              <theima:sex>male</itheima:sex>
          </itheima:student>
      </itheima:students>
    • 內(nèi)部dtd 在xml內(nèi)部定義dtd

    • 外部dtd 在外部文件中定義dtd

    • Student.dtd

    • student.xml

    • 本地dtd文件 <!DOCTYPE students SYSTEM "student.dtd">

    • 網(wǎng)絡(luò)dtd文件 <!DOCTYPE students PUBLIC "名稱空間" “student.dtd”>

    • <!ELEMENT students (student*) >
      <!ELEMENT student (name,age,sex)>
      <!ELEMENT name (#PCDATA)>
      <!ELEMENT age (#PCDATA)>
      <!ELEMENT sex (#PCDATA)>
      <!ATTLIST student number ID #REQUIRED> 唯一的,必須的
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE students SYSTEM  "student.dtd">
      <students>
          <student number="s0001" >
              <name>zs</name>
              <age>abc</age>
              <sex>yao</sex>
          </student>
      </students>
    • dtd  約束不嚴(yán)謹(jǐn)

    • schema

4、XML解析

  • 解析XML可以做:

    • 如果xml作為配置文件:讀取

    • 如果xml作為傳輸文件:寫(xiě)、讀

  • XML解析思想:

    • 優(yōu)點(diǎn):不占內(nèi)存,速度快

    • 缺點(diǎn):只能讀取,不能回寫(xiě)

    • 優(yōu)點(diǎn):因?yàn)樵趦?nèi)存中會(huì)形成dom樹(shù),可以對(duì)dom樹(shù)進(jìn)行增刪改查

    • 缺點(diǎn):dom樹(shù)非常占內(nèi)存,解析速度慢

    • Document Element Text Attribute Comment

    • DOM:將文檔加載到內(nèi)存,形成一棵dom樹(shù)(document對(duì)象),將文檔的各個(gè)組成部分封裝為一些對(duì)象

    • SAX:逐行讀取,基于事件驅(qū)動(dòng)

  • xml常用的解析器

    • 定義了一種規(guī)則

    • 使用方法

    • 使用步驟

    • XPath:

    • public classTestXPath3 {
            @Test
            publicvoidtest()throwsException{
                  SAXReaderread= new SAXReader();
                  Documentdocument= read.read("src/Dom4jTest.xml");
                  Listnodes= document.selectNodes("/bookstore//book/title");
                  for(inti= 0;i< nodes.size();i++) {
                        Nodenode= (Node)nodes.get(i);
                        System.out.println(node.getText());
                  }
            }
      }
    • selectSingleNode()

    • selectNodes()

    • 注意:要導(dǎo)包 jaxen...jar

    • 創(chuàng)建解析器 SAXReader reader = new SAXReader()

    • 解析xml 獲得document對(duì)象 Document document = reader.read(url)

    • //    nodename 選取此節(jié)點(diǎn)。

    • //    /     從根節(jié)點(diǎn)選取。

    • //    //     從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置。

    • //    ..     選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)。

    • //    @     選取屬性。

    • //      [@屬性名]    屬性過(guò)濾

    • //      [標(biāo)簽名]     子元素過(guò)濾

    •      @Test

           //遍歷所有元素節(jié)點(diǎn)

    •  publicvoidtest2()throwsException{
                  //創(chuàng)建一個(gè)xml解析對(duì)象
                  SAXReaderreader= new SAXReader();
                  //把xml文檔加載到document對(duì)象中
                  Documentdocument= reader.read("src/Book.xml");
                  Elementroot= document.getRootElement();
                  treeWalk(root);
            }
            
            privatevoidtreeWalk(Elementele){
                  //輸出當(dāng)前節(jié)點(diǎn)的名字
                  System.out.println(ele.getName());
                  //ele.nodeCount()得到當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)的數(shù)量
                  for(inti= 0;i<ele.nodeCount();i++){
                        //取出下標(biāo)為i的節(jié)點(diǎn)
                        Nodenode= ele.node(i);
                        //判斷當(dāng)前節(jié)點(diǎn)是否為標(biāo)簽
                        if(nodeinstanceofElement){
                              //把node強(qiáng)轉(zhuǎn)為標(biāo)簽(Element)
                              treeWalk((Element)node);
                        }
                  }
            }
      }
    • public classTestDom4j {
            @Test
            publicvoidtest1()throwsException{
                  //創(chuàng)建一個(gè)xml解析對(duì)象
                  SAXReaderreader= new SAXReader();
                  //把xml文檔加載到document對(duì)象中
                  Documentdocument= reader.read("src/Book.xml");
                  Elementroot= document.getRootElement();
      //          Element bookNode = root.element("書(shū)");
      //          System.out.println(bookNode.getName());
                  //得到當(dāng)前節(jié)點(diǎn)所有的子節(jié)點(diǎn)
                  Listlist= root.elements();
                  //得到第二本書(shū)對(duì)象
                  ElementsecondBook= (Element)list.get(1);
                  //得到當(dāng)前節(jié)點(diǎn)的文本內(nèi)容
                  Stringname= secondBook.element("書(shū)名").getText();
                  System.out.println(name);
            }
    • 導(dǎo)入jar包 dom4j.jar

    • 創(chuàng)建解析器

    • 解析xml 獲得document對(duì)象

    • SAXReader reader = new SAXReader()

    • Document document = reader.read(url)

    • JAXP sun公司提供的解析 支持dom和sax

    • JDOM

    • DOM4J dom for java民間方式,但是是事實(shí)方式,非常好,支持dom

    • 解析xml

    • XPATH 專門用于查詢

上述就是小編為大家分享的什么是XML了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:什么是XML-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://muchs.cn/article12/dooegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)定制開(kāi)發(fā)、ChatGPT、網(wǎng)站設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司