XML入门
1 XML入門
? 1.1 引入
? ? ?HTML:負責網頁的結構???????
? ? CSS:負責網頁的樣式(美觀)
? ? ?Javascript:負責在瀏覽器端與用戶進行交互。
? 負責靜態的網頁制作的語言
???????????????????????????
? HTML語言特點:
? ? ? ? ? ? ? ? ? 1)由標簽組成。 <title> <p> <hr/> <br/>
? ? ? ? ? ? ? ? ? ?2)語法結構松散的??? <p></p>?? <p>?<P>
? ? ? ? ? ? ? ? ? ? ? ? ? ?大小寫不區分
? ? ? ? ? ? ? ? ? ? ? ? ? ?結束標簽和開始標簽不一定匹配
????????????????????????????????????
????????????????????????????????????
| <html> ???????? <head> ?????????????????? <title>this is title</title> ???????? </head> ???????? <body> ?????????????????? <p>html標簽</p> ?????????????????? <P>html標簽</P> ?????????????????? <abc>abc標簽</abc>? 自定義標簽 ???????? </body> </html> |
?
這種自定義標簽可以把他們叫做xml標簽。
??????????????????
?1.2HTML和XML的區別?
?HTML????????????????????????????????????? XML???
名稱:?????? HyperText Markup Languae(超文本標記語言)??? Extend Markup Languge(可擴展標簽語言)
標簽:???? 標簽是w3c組成指定,固定的,約100來個???????? 標簽由開發者自己制定的(要按照一定的語法定義)
作用: ?????負責網頁的結構??????????????????????????????
1)描述帶關系的數據(作為軟件的配置文件): 包 含與被包含的關系
? ?properties文件: key-value
?name=eric
?password=123456
? <user>
? <name>eric</name>
<password>123456</password>
? </user>
?tomcat
2)作為數據的載體(存儲數據,小型的“數據庫”)
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?
2 XML作用
????????????? 2.1 描述帶關系的數據(軟件的配置文件)
??????????????????????????? web服務器(PC):
??????????????????????????? 學生管理系統 -> 添加學生功能 -> 添加學生頁面 -> name=eric&email=eric@qq.com?
???????????????????????????????????? 前提:網絡(IP地址: oracle:255.43.12.54? 端口:1521 )
?
???????????????????????????????????? java代碼:使用ip(255.43.12.54)地址和端口(1521),連接oracle數據庫,保存學生數據。
?
???????????????????????????????????? 把ip地址端口配置到xml文件:
??????????????????????????????????????????????????????? host.xml
???????????????????????????????????????????????????????????????? <host>
?????????????????????????????????????????????????????????????????????????? <ip>255.43.12.55</ip>
?????????????????????????????????????????????????????????????????????????? <port>1521</port>
???????????????????????????????????????????????????????????????? </host>
?
??????????????????????????? 數據庫服務器(PC):
??????????????????????????????????????????????????????? 主服務器(255.43.12.54):Oracle數據庫軟件(負載)
??????????????????????????????????????????????????????? 副服務器(255.43.12.55):Oracle數據庫軟件
????????????? 2.2 數據的載體(小型的“數據庫”)
??????????????????????????? 教師管理系統:? 姓名?? 工齡+1? 郵箱
?
??????????????????????????? 發教師數據給財務管理系統:
?????????????????????????????????????????????? Stringteacher =??? name=張三&email=zhangsan@qq.com&workage=2? 字符串
???????????????????????????????????????????????????????????????? (問題: 1)不好解析 2)不是規范)
?
???????????????????????????????????? ???????? teacher.xml
??????????????????????????????????????????????????????? <teacher>????????
?????????????????????????????????????????????????????????????????????????? <name>張三</name>
?????????????????????????????????????????????????????????????????????????? <email>zhangsan@qq.com</email>
?????????????????????????????????????????????????????????????????????????? <workage>2</workage>
??????????????????????????????????????????????????????? </teacher>
?????????????????????????????????????????????? 這種一種規范
?
??????????????????????????? 財務管理系統:??
??????????????????????????????????????????????????????? 姓名?? 工齡+1? 郵箱
?????????????????????????????????????????????? 發獎金:??統計獎金。?? 工齡
?????????????????????????????????????????????? 發郵件功能:
???????????????????????????????????????????????????????????????? 郵箱?? 姓名??金額
?
??????????????????????????? 方案一:在財務管理系統中維護了一套教師信息。
?????????????????????????????????????????????? 每年: 工齡增加? 維護了兩個系統的信息。
?
??????????????????????????? 方案二:教師信息只在教學管理系統中維護。
3 XML語法
?????????????????? xml文件以xml后綴名結尾。
?????????????????? xml文件需要使用xml解析器去解析。瀏覽器內置了xml解析器。
????????????? 3.1 標簽
??????????????????????????? 語法: <student></student>?開始標簽? 標簽體內容? 結束標簽
???????????????????????????????????? 1)<student/> 或 <student></student>空標簽。沒有標簽體內容
???????????????????????????????????? 2)xml標簽名稱區分大小寫。
???????????????????????????????????? 3)xml標簽一定要正確配對。
???????????????????????????????????? 4)xml標簽名中間不能使用空格
???????????????????????????????????? 5)xml標簽名不能以數字開頭
??????????????????????????? ???????? 6)注意:在一個xml文檔中,有且僅有一個根標簽
????????????? 3.2 屬性
??????????????????????????? 語法:<Student name="eric">student</Student>
??????????????????????????? 注意:
?????????????????????????????????????????????? 1)屬性值必須以引號包含,不能省略,也不能單雙引號混用!!!
?????????????????????????????????????????????? 2)一個標簽內可以有多個屬性,但不能出現重復的屬性名!!!
????????????? 3.3 注釋
?????????????????????????????????????????????? 語言: <!--? xml注釋 -->
?
?????????????????? 練習:
???????????????????????????????????? 通訊錄系統
???????????????????????????????????? 聯系人數據:編號(唯一的) 姓名?? 年齡?? 電話郵箱? QQ
?
???????????????????????????????????? ?要求:
???????????????????????????????????? contact.xml
?????????????????????????????????????????????? 1)設計一個xml文件,用于存儲聯系人數據
?????????????????????????????????????????????? 2)這個xml文件可以多個聯系人。
????????????? 3.4 文檔聲明
?????????????????? 語法: <?xml version="1.0" encoding="utf-8"?>
?
?????????????????? version:xml的版本號
?????????????????? encoding:解析xml文件時查詢的碼表(解碼過程時查詢的碼表)
?
?????????????????? 注意:
???????????????????????????????????? 1)如果在ecplise工具中開發xml文件,保存xml文件時自動按照文檔聲明的encoding來保存文? ???????????????????????????????????? 件。
???????????????????????????????????? 2)如果用記事本工具修改xml文件,注意保存xml文件按照文檔聲明的encoding的碼表來保存。
?
????????????? 3.5 轉義字符
?????????????????? 在xml中內置了一些特殊字符,這些特殊字符不能直接被瀏覽器原樣輸出。如果希望把這些特殊字符按照原樣輸出到瀏覽器,對這些特殊字符進行轉義。轉義之后的字符就叫轉義字節。
?
??????????????????????????? ??????? 特殊字符? 轉義字符
???????????????????????????????????? ?<????????<
???????????????????????????????????? ?>????????>
???????????????????????????????????? ?"????????"
???????????????????????????????????? &???????? &
???????????????????????????????????? 空格???? ?&nsbp;
????????????????????????????????????
????????????? 3.6CDATA塊
?????????????????? 作用:可以讓一些需要進行包含特殊字符的內容統一進行原樣輸出。
?
????????????? 3.7 處理指令
??????????????????????????? 作用:告訴xml解析如果解析xml文檔
???????????????????????????
??????????????????????????? 案例:<?xml-stylesheet type="text/css"href="1.css"?> 告訴xml解析該xml文檔引用了哪個css文件
?
???????????????????????????????????? 需要提前xml內容可以使用xml-stylesheet指令指令
????????????????????????????????????
????????
4 XML解析?
????????????? 4.1 引入
?????????????????? xml文件除了給開發者看,更多的情況使用程序讀取xml文件的內容。這叫做xml解析
????????????? 4.2 XML解析方式(原理不同)
??????????????????????????? DOM解析
??????????????????????????? SAX解析
????????????? 4.3 XML解析工具
???????????????????????????????????? DOM解析原理:
??????????????????????????????????????????????????????? 1)JAXP (oracle-Sun公司官方)
??????????????????????????????????????????????????????? 2)JDOM工具(非官方)
?????????????????????????????????????????????? ???????? 3)Dom4J工具(非官方)
???????????????????????????????????????????????????????????????? 三大框架(默認讀取xml的工具就是Dom4j)
??????????????????????????????????????????????????????? .......
?
???????????????????????????????????? SAX解析原理:
?????????????????????????????????????????????? ???????? 1)Sax解析工具(oracle-sun公司官方)
?
????????????? 4.4 什么是DOM解析
??????????????????????????? DOM解析原理:xml解析器一次性把整個xml文檔加載進內存,然后在內存中構建一顆Document的對象樹,通過Document對象,得到樹上的節點對象,通過節點對象訪問(操作)到xml文檔的內容。
????????????? 4.5Dom4j工具
??????????????????????????? 非官方,不在jdk中。
?
??????????????????????????? 使用步驟:
???????????????????????????????????? 1)導入dom4j的核心包。 dom4j-1.6.1.jar
???????????????????????????????????? 2)編寫Dom4j讀取xml文件代碼
????????????????????????????????????
| public static void main(String[] args) { ?????? try { ?????????? //1.創建一個xml解析器對象 ?????????? SAXReader reader = new SAXReader(); ?????????? //2.讀取xml文檔,返回Document對象 ?????????? Document doc = reader.read(new File("./src/contact.xml")); ?????????? ?????????? System.out.println(doc); ?????? } catch (DocumentException e) { ?????????? e.printStackTrace(); ?????????? throw new RuntimeException(e); ?????? } ?????? ??? } |
?
????????????? 4.6Domj4讀取xml文件
???????????????????????????????????? 節點:
?????????????????????????????????????????????? Iterator? Element.nodeIterator();? //獲取當前標簽節點下的所有子節點
?
???????????????????????????????????? 標簽:
?????????????????????????????????????????????? ? Element?Document.getRootElement();? //獲取xml文檔的根標簽?????????????
??????????????????????????? ?????????????????? ?Element??ELement.element("標簽名") //指定名稱的第一個子標簽
?????????????????????????????????????????????? ??Iterator<Element>Element.elementIterator("標簽名");// 指定名稱的所有子標簽
??????????????????????????????????????????????????????? List<Element> Element.elements(); //獲取所有子標簽
???????????????????????????????????????????????????????
?????????????????? ?????????????????? 屬性:
?????????????????????????????????????????????? String? ?Element.attributeValue("屬性名") //獲取指定名稱的屬性值
?????????????????????????????????????????????? ?Attribute???Element.attribute("屬性名");//獲取指定名稱的屬性對象?????
???????????????????????????????????????????????????????????????? Attribute.getName()? //獲取屬性名稱
???????????????????????????????????????????????????????????????? Attibute.getValue()? //獲取屬性值
??????????????????????????????????????????????????????? List<Attribute>???????? Element.attributes();? //獲取所有屬性對象
??????????????????????????????????????????????????????? Iterator<Attribute>????????? Element.attibuteIterator(); //獲取所有屬性對象
?
???????????????????????????????????? 文本:
???????????????????????????????????????????????????????????????? Element.getText();? //獲取當前標簽的文本
???????????????????????????????????????????????????????????????? Element.elementText("標簽名") //獲取當前標簽的指定名稱的子標簽的文本內容
?
轉載于:https://www.cnblogs.com/Dylansuns/p/6498607.html
總結
- 上一篇: 《深入浅出MySQL》开发篇
- 下一篇: asp.net ajax控件工具集 Au