您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關什么是XML,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1、XML : extensible markup language 可擴展標記語言 version="1.0"
可擴展:所有的標簽都是自定義的
功能:數據存儲
配置文件
數據傳輸
html 與 xml 區別
HTML語法松散,xml語法嚴格
html做頁面展示,xml做數據存儲
Html所有標簽都是預定義的,xml所有標簽都是自定義的
2、xml語法:
文檔聲明
version 版本號 固定值1.0
encoding 指定文檔的碼表 默認值為iso-8859-1
standalone 指定文檔是否獨立 yes 或 no
必須寫在xml文檔的第一行
寫法:<?xml version = "1.0"?>
屬性
元素 xml文檔中的標簽
元素名稱區分大小寫
數字不能開頭
文檔中必須有且只能有一個根元素
元素需要正確閉合 <body></body> <br/>
元素需要正確嵌套
元素名稱要遵守
文本
<!CDATA[數據內容]>
轉義字符 >;
CDATA 里邊的數據會原樣顯示
屬性
屬性值必須用引號引起來,單雙引號都行
注釋
<!-- -->
處理指令:現在基本不用
<?xml-stylesheet type="text/css" href="1.css"?>
3、XML約束
約束就是xml的書寫規則
約束的分類:
導入xsd約束文檔
編寫根標簽
引入實例名稱空間 xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
引入名稱空間 xsi:schemaLocation="www.itcast.cn/xml student.xsd"
引入默認的名稱空間
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、編寫根標簽
2、引入實例名稱空間 xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
3、引入名稱空間 xsi:schemaLocation="www.itcast.cn/xml student.xsd"
4、引入默認的名稱空間
-->
<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>
內部dtd 在xml內部定義dtd
外部dtd 在外部文件中定義dtd
Student.dtd
student.xml
本地dtd文件 <!DOCTYPE students SYSTEM "student.dtd">
網絡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 約束不嚴謹
schema
4、XML解析
解析XML可以做:
如果xml作為配置文件:讀取
如果xml作為傳輸文件:寫、讀
XML解析思想:
優點:不占內存,速度快
缺點:只能讀取,不能回寫
優點:因為在內存中會形成dom樹,可以對dom樹進行增刪改查
缺點:dom樹非常占內存,解析速度慢
Document Element Text Attribute Comment
DOM:將文檔加載到內存,形成一棵dom樹(document對象),將文檔的各個組成部分封裝為一些對象
SAX:逐行讀取,基于事件驅動
xml常用的解析器
定義了一種規則
使用方法
使用步驟
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()
注意:要導包 jaxen...jar
創建解析器 SAXReader reader = new SAXReader()
解析xml 獲得document對象 Document document = reader.read(url)
// nodename 選取此節點。
// / 從根節點選取。
// // 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。
// .. 選取當前節點的父節點。
// @ 選取屬性。
// [@屬性名] 屬性過濾
// [標簽名] 子元素過濾
@Test
//遍歷所有元素節點
publicvoidtest2()throwsException{ //創建一個xml解析對象 SAXReaderreader= new SAXReader(); //把xml文檔加載到document對象中 Documentdocument= reader.read("src/Book.xml"); Elementroot= document.getRootElement(); treeWalk(root); } privatevoidtreeWalk(Elementele){ //輸出當前節點的名字 System.out.println(ele.getName()); //ele.nodeCount()得到當前節點的所有子節點的數量 for(inti= 0;i<ele.nodeCount();i++){ //取出下標為i的節點 Nodenode= ele.node(i); //判斷當前節點是否為標簽 if(nodeinstanceofElement){ //把node強轉為標簽(Element) treeWalk((Element)node); } } } }
public classTestDom4j { @Test publicvoidtest1()throwsException{ //創建一個xml解析對象 SAXReaderreader= new SAXReader(); //把xml文檔加載到document對象中 Documentdocument= reader.read("src/Book.xml"); Elementroot= document.getRootElement(); // Element bookNode = root.element("書"); // System.out.println(bookNode.getName()); //得到當前節點所有的子節點 Listlist= root.elements(); //得到第二本書對象 ElementsecondBook= (Element)list.get(1); //得到當前節點的文本內容 Stringname= secondBook.element("書名").getText(); System.out.println(name); }
導入jar包 dom4j.jar
創建解析器
解析xml 獲得document對象
SAXReader reader = new SAXReader()
Document document = reader.read(url)
JAXP sun公司提供的解析 支持dom和sax
JDOM
DOM4J dom for java民間方式,但是是事實方式,非常好,支持dom
解析xml
XPATH 專門用于查詢
上述就是小編為大家分享的什么是XML了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。