1. 程式人生 > >xml簡介和dom4j解析xml重要方法

xml簡介和dom4j解析xml重要方法

1.xml(可擴充套件標記語言)的概述
    與html的區別:
        xml: 描述資料,用於儲存和傳輸資料。標籤都是自定義的
        html:顯示資料,標籤都是預定義的
        
    注意事項:
    文件宣告必須在第一行
    只有一個根標籤
    元素只能包裹巢狀,不能交叉巢狀
    註釋不能巢狀
    標籤命名規則:字母、數字、下劃線、減號、英文句點組成,嚴格區分大小寫
    屬性值要用單引號或雙引號

2.約束文件
    1.DTD(Document tyte definition)--->約束xml的書寫規範
        a DTD檔案的書寫
            
<?xml version="1.0" encoding="UTF-8"?> //文件宣告 <!ELEMENT 書架 (書+)> <!ELEMENT 書(書名,作者,售價)> <!ELEMENT 書名(#PCDATA)> <!ELEMENT 作者(#PCDATA)> <!ELEMENT 售價(#PCDATA)> b DTD檔案的引入 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 書架 SYSTEM "book.dtd"> //
可以在xml檔案建立時自動生成 <書架> <書> <書名></書名> <作者></作者> <售價></售價> </書> </書架> 2.Schema的概述:--->符合xml語法,拓展名.xsd 對比 Schema 和 DTD a.XML Schema符合XML語法結構。 b.DOM、SAX等XML API很容易解析出XML Schema文件中的內容。 c.XML Schema對名稱空間支援得非常好。 d.XML Schema比XML DTD支援更多的資料型別,並支援使用者自定義新的資料型別。 e.XML Schema定義約束的能力非常強大,可以對XML例項文件作出細緻的語義限制。 約束文件:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' //標準名稱空間 xmlns意思為xml名稱空間 targetNamespace='http://www.itheima.com'> //自定義名稱空間 <xs:element name='書架'> //約束根標籤 <xs:complexType> //表示根標籤為複雜型別,可以有子標籤 <xs:sequence maxOccurs='unbounded'> //表示子元素有順序 屬性為unbounded表示子標籤的數量不限 <xs:element name='書'> <xs:complexType> <xs:sequence> <xs:element name='書名' type='xs:string' /> <xs:element name='作者' type='xs:string' /> <xs:element name='售價' type='xs:string' /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 引入約束文件: <?xml version="1.0" encoding="UTF-8"?> <itheima:書架 xmlns:itheima="http://www.itheima.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itheima.com book.xsd"> <書> <書名>書名</書名> <作者>作者</作者> <售價>售價</售價> </書> </itheima:書架> 3.XML的解析 解析的含義: 採用Java程式碼操作(增,刪,改,查)我們的XML檔案裡面的內容. 常見的解析方式: DOM:把所有的節點資料,全部載入到記憶體當中.解析方便,容易出現記憶體溢位 SAX:逐個節點進行解析,不會出現記憶體溢位,解析較為繁瑣. 提供的解析操作: JAXP:sun公司提供 DOM4j:開源框架,需要匯入jar包 4.Dom4j常用的方法: a需要匯入jar包 b建立對應的document物件----> dom4j-1.6.1---docs---index.html---quick start---Creating a new XML document SAXReader reader = new SAXReader(); //獲取解析器物件 Document document = reader.read(url); //通過解析器獲取檔案物件,引數url為xml的檔案路徑的字串 重要方法:Element getRootElement() //通過檔案物件,獲取根標籤物件 Element 建立元素物件的方式: DocumentHelper.CreatElement(String name); //建立一個新的元素物件,引數為要建立的物件的名稱 常用方法 獲取方法: 獲取文字/屬性: String attributeValue(String name): //根據指定的屬性名稱獲取其對應的值 String getText() : //獲取當前元素物件的文字 String elementText(String name) //獲取名稱為name的子元素中的文字 獲取子元素物件: Element element(String name): //獲取元素名稱為name的子元素物件,如果有重複,返回第一個 List elements() : //獲取所有的子元素 List elements(String name): //獲取元素名稱為name的所有子元素集合 獲取父元素物件 Element getParent(); 新增元素 add(Element e) //新增子元素 修改文字、屬性: void setText(String text): //設定當前元素物件的文字 Element addAttribute(String name,String value): //根據指定的屬性名稱和值進行新增或者修改 引數為屬性名和屬性值 刪除方法: remove(Element e); //刪除子元素,引數為元素物件 將檔案寫入XML檔案中 //獲取格式化物件 OutputFormat format=OutputFormat.createCompactFormat(); //獲取位元組流 FileOutputStream fos=new FileOutputStream(path); //獲取寫xml物件 XMLWriter xw=new XMLWriter(fos,format); //寫檔案 xw.write(d); //引數為檔案物件