XML簡單總結(0309day08)

XML總結

1.XML的簡介css

     

XMLhtml

HTMLnode

EXtensible Markup Languageweb

可擴展標記語言,可自定義標籤app

(1)名稱中能夠包含字母、數字、下劃線、減號,但不能以數字、減號開頭dom

(2)不能以xml開頭,不管是大寫仍是小寫都不能夠ui

(3)不能包含空格 編碼

Hypertext markuplanguagespa

超文本標記語言,固定標籤orm

嚴格區分大小寫

不區分大小寫

全部的標籤必須成對出現,且標籤不能交叉嵌套

大多的標籤是成對出現,但也有不成對出現的標籤,如<br>

    文檔聲明必須爲<?xml開頭,以?>結束

html無此要求

標籤結構:開始標籤、元素體、結束標籤

標籤結構:開始標籤、元素體、結束標籤

屬性是元素的一部分,它必須出如今元素的開始標籤中,一個元素能夠有0~N個屬性,但一個元素中不能出現同名屬性

屬性沒必要出如今元素的開始標籤中,能夠放在css文件中,或者內聯css

註釋以「<!--」開始,以「-->」結束

註釋以「<!--」開始,以「-->」結束

用來存儲數據或配置文件

用來解析顯示頁面

2.XML中經常使用的轉義字符

大於號(&gt;)   

小於號(&lt;)   

雙引號(&quot;)

單引號(&apos;)

&號(&amps;)

備註:當大量的轉義字符出如今xml文檔中時,會使xml文檔的可讀性大幅度下降。這時若是使用CDATA段就會好一些。

在CDATA段中出現的「<」、「>」、「」」、「’」、「&」,都無需使用轉義字

符。CDATA的格式:<![CDATA[ 要顯示的內容 ]]>

3.XML約束

DTD約束

Schema約束

DTD(Document Type Definition),文檔類型定義,用來約束XML文檔。

Schema是新的XML文檔約束;要比DTD強大不少;

Schema自己也是XML文檔,但Schema文檔的擴展名爲xsd,而不是xml。

內部DTD:在XML文檔內部嵌入DTD,只

對當前XML文檔有效;

外部DTD:獨立的DTD文件,擴展名爲.dtd;

<!DOCTYPE students SYSTEM「stud.dtd」>

<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.example.org/demo"

 elementFormDefault="qualified">

 <element name="bookstore">

     <complexType>  <!—包含元素或屬性的標籤-->

         <sequence maxOccurs="3" minOccurs="1"><!—至少出現1次,最多3次-->

             <element name="book">

                <complexType>

                   <sequence>

                      <element name="title">

                         <complexType>

                            <simpleContent>

                                <extension base="string">

                                 <attribute name="lang" type="string"></attribute>

                                </extension>

                            </simpleContent>

                         </complexType>

                      </element>

                      <element name="author"  type="string"></element>

                      <element name="year" type="date"></element>

                      <element name="price" type="double"></element>

                   </sequence>

                   <attribute name="category" type="string" use="required"></attribute>

                </complexType>

             </element>

         </sequence>

     </complexType>

 </element>

</schema>

內部示例:

<!ELEMENT students (student+)>

<!ELEMENT student (name,age,sex)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>

<!ELEMENT sex (#PCDATA)>

使用*、+、?來指定子元素出現的次數

*:能夠出現0~N次;

+:能夠出現1~N次;

?:能夠出現0~1次。

4.XML的解析

在xml的解析中主要講解了dom4j

4.1 dom4j的快速入門:

      //第一步:建立解析對象

      SAXReader sr=new SAXReader();

      //第二步:讀取相應的XML文件,read中的內容爲須要讀取的xml文件的路徑

      Document doc=sr.read(「*******」);

      //第三步:獲得相應的根元素

      Element root=doc.getRootElement();

      //再調用其餘方法,獲取子元素

4.2 Xpath的快速入門

      //第一步:建立解析對象

      SAXReader reader = new SAXReader();

   //第二步:讀取xml文件

      Document doc=reader.read(「*****」);

   //第三步:獲得要求的結點(Nodes或singleNode)

demo1

      List<Element> elements = document.selectNodes("//year"); 

      //該方法是得到全部year標籤

         for(Element ele:elements){

              System.out.println(ele.getText());

         }

demo2

      Element ele = (Element) document.selectSingleNode("//book[@category='WEB']/price");

      //該方法是獲取屬性名爲category,屬性值爲web的book標籤下的price標籤,結果是單個標籤

System.out.println(ele.getText());

 

dom4j中經常使用的方法:

Node方法:

l  String asXML():把當前節點轉換成字符串,若是當前Node是Document,那麼就會把整個XML文檔返回;

l  String getName():獲取當前節點名字;Document的名字就是綁定的XML文檔的路徑;Element的名字就是元素名稱;Attribute的名字就是屬性名;

l  Document getDocument():返回當前節點所在的Document對象;

l  short getNodeType():獲取當前節點的類型;

l  String getNodeTypeName():獲取當前節點的類型名稱,例如當前節點是Document的話,那麼該方法返回Document;

l  String getStringValue():獲取當前節點的子孫節點中全部文本內容鏈接成的字符串;

l  String getText():獲取當前節點的文本內容。若是當前節點是Text等文本節點,那麼本方法返回文本內容;例如當前節點是Element,那麼當前節點的內容不是子元素,而是純文本內容,那麼返回文本內容,不然返回空字符串;

l  void setDocument(Document doc):給當前節點設置文檔元素;

l  void setParent(Element parent):給當前節點設置父元素;

l  void setText(String text):給當前節點設置文本內容;

 

 

Branch方法:

l  void add(Element e):添加子元素;

l  void add(Node node):添加子節點;

l  void add(Comment comment):添加註釋;

l  Element addElement(String eleName):經過名字添加子元素,返回值爲子元素對象;

l  void clearContent():清空全部子內容;

l  List content():獲取全部子內容,與獲取全部子元素的區別是,<name>liSi</name>元素沒有子元素,但有子內容;

l  Element elementById(String id):若是元素有名爲「ID」的屬性,那麼可使用這個方法來查找;

l  int indexOf(Node node):查找子節點在子節點列表中的下標位置;

l  Node node(int index):經過下標獲取子節點;

l  int nodeCount():獲取子節點的個數;

l  Iterator nodeIterator():獲取子節點列表的迭代器對象;

l  boolean remove(Node node):移除指定子節點;

l  boolean remove(Commont commont):移除指定註釋;

l  boolean remove(Element e):移除指定子元素;

l  void setContent(List content) :設置子節點內容;

 

 

Document方法:

l  Element getRootElement():獲取根元素;

l  void setRootElement():設置根元素;

l  String getXmlEncoding():獲取XML文檔的編碼;

l  void setXmlEncoding():設置XML文檔的編碼;

 

 

Element方法:

l  void add(Attribute attr):添加屬性節點;

l  void add(CDATA cdata):添加CDATA段節點;

l  void add(Text Text):添加Text節點;

l  Element addAttribute(String name, String value):添加屬性,返回值爲當前元素自己;

l  Element addCDATA(String cdata):添加CDATA段節點;

l  Element addComment(String comment):添加屬性節點;

l  Element addText(String text):添加Text節點;

l  void appendAttributes(Element e):把參數元素e的全部屬性添加到當前元素中;

l  Attribute attribute(int index):獲取指定下標位置上的屬性對象;

l  Attribute attribute(String name):經過指定屬性名稱獲取屬性對象;

l  int attributeCount():獲取屬性個數;

l  Iterator attributeIterator():獲取當前元素屬性集合的迭代器;

l  List attributes():獲取當前元素的屬性集合;

l  String attributeValue(String name):獲取當前元素指定名稱的屬性值;

l  Element createCopy():clone當前元素對象,但不會copy父元素。也就是說新元素沒有父元素,但有子元素;

l  Element element(String name):獲取當前元素第一個名稱爲name的子元素;

l  Iterator elementIterator():獲取當前元素的子元素集合的迭代器;

l  Iterator elementIterator(String name):獲取當前元素中指定名稱的子元素集合的迭代器;

l  List elements():獲取當前元素子元素集合;

l  List elements(String name):獲取當前元素指定名稱的子元素集合;

l  String elementText(String name):獲取當前元素指定名稱的第一個元素文件內容;

l  String elementTextTrime(String name):同上,只是去除了無用空白;

l  boolean isTextOnly():當前元素是否爲純文本內容元素;

l  boolean remove(Attribute attr):移除屬性;

l  boolean remove(CDATA cdata):移除CDATA;

l  boolean remove(Text text):移除Text。

 

 

DocumentHelper靜態方法介紹:

l  static Document createDocument():建立Dcoument對象;

l  static Element createElement(String name):建立指定名稱的元素對象;

l  static Attribute createAttrbute(Element owner, String name, String value):建立屬性對象;

l  static Text createText(String text):建立屬性對象;

  • static Document parseText(String text):經過給定的字符串生成Document對象;

相關文章
相關標籤/搜索