天天看點

xml和dom4j1.xml2.dom4j解析xml

1.xml

1.xml的建立以及文檔聲明

建立方式1:
	直接建立一個File檔案,取名為xxx.xml
	建立方式2:
	         在IDEA中配置模闆:
	                         setting-->搜尋template-->new-->添加xml模闆
           

文檔聲明的第一行為:

2.xml文檔的注釋

<!--
注釋内容
-->
           

快捷鍵為:ctrl+/

3.xml的組成與注意事項

1.xml的組成部分:
 (1)元素(标簽) element
 (2)屬性  attribute
2.xml的格式
 (1)<标簽名>标簽體</标簽名>              閉合标簽
     <表簽名/>                          自閉合标簽
 (2)<标簽名>
            <子标簽名>子标簽題</子标簽名>
     </标簽名>
     标簽中套标簽
           

3.注意事項

a.标簽名區分大小寫
	b.标簽中不能有空格
	c.不建議以XML  Xml  xml開頭,不建議以數字開頭
	d.一個良好的xml文檔,都會有一個根标簽
           

4.轉義字元

常用的是需要記住:

<  轉義為  &lt
                >  轉義為  &gt
           

5.文檔限制(了解)

(1) dtd
擴充名為:dtd
#PCDATE:表示标簽體中應為文本
#CDATE:表示标簽中的屬性的指應為字元型
#REQUIRED:表示屬性必須設定
(2) Schema
擴充名為:xsd
文本本身為文檔:W3C-----限制---->Schema----限制---->自己的文檔

           

2.dom4j解析xml

使用DOM思想,讀取xml檔案

介紹dom4j 核心類

1: SAXReader DOM解析思想的核心類

方法: read(綁定了這個xml檔案的輸入流) 讀取xml檔案
    傳回文檔對象,傳回值是Document對象
           

2: Document對象

方法: getRootElement()擷取文檔的根标簽
   傳回值,傳回的是标簽對象 Element
           

3:Element标簽對象

方法擷取子标簽  List<Element>  elements()
  傳回所有的子标簽集合List
  方法 String attributeValue(String 屬性名) 擷取屬性值
  方法 String getText() 擷取到的是,标簽體的文本部分
           
---------------------------xml文檔------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<books>
    <book bookName="《架構師成長之路》" press="清華計算機(1)部"  date="2010-6-6"  price="125.00"></book>
    <book bookName="《JavaEE企業級開發》" press="清華計算機(2)部"  date="2011-5-5"  price="115.00"></book>
    <book bookName="《Oracle指南》" press="清華計算機(3)部"  date="2012-7-7"  price="89.00"></book>
</books>

-------------------------測試類-------------------------------------------


public class Test02 {
    public static void main(String[] args) throws Exception{
        //擷取類的反射然後再使用獲得的反射進行擷取流對象
        InputStream in = Test02.class.getClassLoader().getResourceAsStream("books.xml");
        //建立一個SAXReader對象,然後進行讀取xml檔案
        SAXReader saxReader = new SAXReader();
        //使用SAXReader的讀取功能,進行讀xml的流
        Document document = saxReader.read(in);
        //使用Document對象擷取根标簽
        Element rootElement = document.getRootElement();
        //使用根标簽擷取子标簽,傳回一個泛型為Element的List集合
        List<Element> list = rootElement.elements();
        //周遊集合
        for (Element element : list) {
            String bookName = element.attributeValue("bookName");
            String press = element.attributeValue("press");
            String date = element.attributeValue("date");
            String price = element.attributeValue("price");
            System.out.println(bookName+"..."+press+"..."+date+"..."+price);
        }
    }
}

--------------------------輸出結果-------------------------------
《架構師成長之路》...清華計算機(1)部...2010-6-6...125.00
《JavaEE企業級開發》...清華計算機(2)部...2011-5-5...115.00
《Oracle指南》...清華計算機(3)部...2012-7-7...89.00