您好,登錄后才能下訂單哦!
這篇文章主要介紹“java的XML語法是什么及怎么使用”,在日常操作中,相信很多人在java的XML語法是什么及怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java的XML語法是什么及怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
有且只有一個根元素
XML文檔聲明必須放在文檔的第一行
<?xml version="1.0" encoding="UTF-8"?>
所有標簽必須成對出現——有開始標簽和結束標簽
XML標簽嚴格區分大小寫
XML必須正確嵌套
XML中的屬性必須加引號
XML中,一些特殊字符必須使用“實體”。
XML中可以使用注釋
<!-- 這就是注釋 -->
將XML文件拖入瀏覽器,或者用瀏覽器打開。
有錯的顯示
正確的顯示
XML元素是開始標簽到結束標簽的部分。
一個元素可以包含:
其他元素
文本
屬性
以上的混合
名稱可以包含字母,數字及其他字符。
名稱不能以數字或者標點符號開始。
名稱不能以字母xml開始。
名稱不能包含空格。
DTD文檔類型定義
用于驗證一個XML文檔是否有效。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE books [ <!ELEMENT books (book*)> <!ELEMENT book (name,author,price)> <!ELEMENT name (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ATTLIST book id CDATA #REQUIRED> ]> <books> <book id="1001"> <name>神雕俠侶</name> <author>金庸</author> <price>44.2</price> </book> <book id="1002"> <name>倚天屠龍記</name> <author>金庸</author> <price>66.8</price> </book> </books>
Schema
是DTD的替代者,名叫XML Schema,用于描述XML文檔結構,比DTD強大。XML Schema支持數據類型。
Schema使用XML來驗證一個XML是否遵循XML語法
Schema可使用能處理XML文檔的工具處理
Schema大大擴充了數據類型,而且還可以自定義數據類型。
Schema支持元素的繼承
Schema支持屬性組
Schema的文檔結構
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema>
所有的Schema文檔都使用schema作為其根元素。
http://www.w3.org/2001/XMLSchema 用于驗證當前Schema文檔的命名空間(用于驗證Schema本身)。xs是定義的前綴。
如何使用Schema驗證XML文件的有效性
XML文件:books.xml
<?xml version="1.0" encoding="UTF-8"?> <books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="books.xsd"> <book id="1001"> <name>神雕俠侶</name> <author>金庸</author> <price>44.2</price> </book> <book id="1002"> <name>倚天屠龍記</name> <author>金庸</author> <price>66.8</price> </book> </books>
Schema文件:books.xsd
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="books"> <xs:complexType> <xs:sequence> <xs:element name="book" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"></xs:element> <xs:element name="author" type="xs:string"></xs:element> <xs:element name="price" type="xs:double"></xs:element> </xs:sequence> <xs:attribute name="id" type="xs:positiveInteger" use="required"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
使用java根據schema來驗證xml的有效性:
package demo; import org.xml.sax.SAXException; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import java.io.File; import java.io.IOException; public class TestXML { public static void main(String[] args) throws SAXException { SchemaFactory sch=SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); File schemaFile=new File("src/demo/books.xsd"); Schema schema=sch.newSchema(schemaFile); Validator validator=schema.newValidator(); Source source=new StreamSource("src/demo/books.xml"); try { validator.validate(source); System.out.println("檢查成功"); } catch (IOException e) { e.printStackTrace(); System.out.println("驗證失敗"); } } }
驗證失敗將拋出異常。
軟件包
dom4j-1.6.1.jar jaxen-1.1-beta-6.jar
使用案例
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Node; import org.dom4j.io.SAXReader; import java.util.List; public class Test01 { public static void main(String[] args) throws DocumentException { SAXReader reader = new SAXReader(); Document doc = reader.read("src/xpath/demo/books.xml"); //取單個節點 Node node = doc.selectSingleNode("//author"); System.out.println("節點的名稱:" + node.getName() + "\t" + node.getText()); System.out.println("========================="); //取所有滿足要求的節點 List<Node> list = doc.selectNodes("//author"); for (Node n : list) { System.out.println("節點的名稱:" + n.getName() + "\t" + n.getText()); } System.out.println("========================="); //選取屬性 List<Attribute> attrs = doc.selectNodes("//book/@id"); for (Attribute attr : attrs) { System.out.println("屬性的名稱:" + attr.getName() + "\t" + attr.getText()); } } }
到此,關于“java的XML語法是什么及怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。