前言: 關(guān)于 xml 特點(diǎn)和基礎(chǔ)知識(shí),可以菜鳥(niǎo)教程進(jìn)行學(xué)習(xí):http://www.runoob.com/xml/xml-tutorial.html
本系列筆記,主要介紹 xml 在 web 開(kāi)發(fā)時(shí)需要了解的知識(shí)
XML 指可擴(kuò)展標(biāo)記語(yǔ)言(eXtensible Markup Language)。
XML 被設(shè)計(jì)用來(lái)傳輸和存儲(chǔ)數(shù)據(jù)。
一、怎么在頁(yè)面上只顯示數(shù)據(jù)?
大家在網(wǎng)頁(yè)上可能都見(jiàn)過(guò)這樣的 xml 文件:
這是沒(méi)有任何樣式的 xml,打開(kāi) tomcat 什么的服務(wù)器,在網(wǎng)頁(yè)上瀏覽 xml 文件的樣式,它的源碼是:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><addresslist> <linkman> <name>肖朋偉</name> <id>2236</id> <company>null</company> <email>xpwi@qq.com</email> <tel>66666</tel> </linkman></addresslist>
怎樣在頁(yè)面上只顯示文字,并加上特定的樣式呢?那就要用到 css 了
(1)先自己寫(xiě)一個(gè) css 樣式:
name{ display: block; color: brown; font-size: 20pt; font-weight: bold;}id, company, email, tel, site{ display: block; color: black; font-size: 14pt; font-weight: normal;}
(2)在 xml 文件中引入這個(gè) css 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- 加上樣式,注意路徑 --><?xml-stylesheet type="text/css" href="../css/first.css" ?><addresslist> <linkman> <name>肖朋偉</name> <id>2236</id> <company>null</company> <email>xpwi@qq.com</email> <tel>66666</tel> </linkman></addresslist>
(3)就會(huì)這樣顯示了:
(4)然后,xml 也可以像 html 標(biāo)簽?zāi)菢?,加屬性,例如?/p>
<tel id = "userTel">66666</tel>
在 xml 文件,更多的用來(lái)描述信息的內(nèi)容,
所以在得到一個(gè) XML 文檔后,應(yīng)該利用程序按照其中元素的定義名稱(chēng)取出對(duì)應(yīng)內(nèi)容,
這樣的操作就稱(chēng)為 xml 解析。
W3C 定義了 SAX 和 DOM 兩種解析方式
在應(yīng)用程序中,基于 DOM 的 XML 分析器將一個(gè) XML 文檔轉(zhuǎn)換成一個(gè)對(duì)象模型的集合,通常稱(chēng)為 DOM 樹(shù)
應(yīng)用程序正是通過(guò)對(duì)這個(gè)對(duì)象模型的操作,來(lái)實(shí)現(xiàn)對(duì) XML 文檔數(shù)據(jù)的操作。
準(zhǔn)備一個(gè) xml 文件(路徑是 D:\xml\first.xml,下面要用目錄,注意):
<?xml version="1.0" encoding="UTF-8" standalone="no"?><addresslist> <linkman> <name>肖朋偉</name> <id>2236</id> <company>null</company> <email>xpwi@qq.com</email> <tel>66666</tel> </linkman></addresslist>
java 解析文件:
【注意】:
1.目錄,我是新建一個(gè)包 xml ,再新建一個(gè) dom.java
2.注意解析的 xml 路徑,要根據(jù)自己的路徑設(shè)置
3.如果自己寫(xiě)代碼,注意一下導(dǎo)包,Document,是 org.w3c.dom.Document
// 目錄,我是新建一個(gè)包 xml ,再新建一個(gè) dom.javapackage xml;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;//注意 Document,是 org.w3c.dom.Document//默認(rèn)導(dǎo)包會(huì)是 javax 那個(gè),注意一下import org.w3c.dom.Document;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import java.io.File;import java.io.IOException;public class dom { public static void main(String[] args){ //(1)建立 DocumentBuilderFactory,用來(lái)得到 DocumentBuilder DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //(2)通過(guò) DocumentBuilderFactory,來(lái)得到 DocumentBuilder DocumentBuilder builder = null; try{ builder = factory.newDocumentBuilder(); }catch (ParserConfigurationException e){ e.printStackTrace(); } //(3)定義 Document doc = null; try { //讀取指定路徑的 xml 文件,要先有一個(gè)這樣的文件 doc = builder.parse("D://xml/" + File.separator + "first.xml"); } catch (SAXException e){ e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } //(4)查找 name 的節(jié)點(diǎn) NodeList nl = doc.getElementsByTagName("name"); //(5)輸出 NodeList 中第一個(gè)子節(jié)點(diǎn)中文本節(jié)點(diǎn)的內(nèi)容 System.out.println("姓名:" + nl.item(0).getFirstChild().getNodeValue()); }}
運(yùn)行就會(huì)在控制臺(tái)打印:
DOM 解析4個(gè)核心操作接口:
Document 接口的常用方法
No. | 方 法 | 類(lèi) 型 | 描 述 |
---|---|---|---|
1 | public NodeList getElementsByTagName(String name) | 普通 | 取得指定節(jié)點(diǎn)名稱(chēng)的 NodeList |
2 | public Element createElement(String tagName)throws DOMException | 普通 | 創(chuàng)建一個(gè)指定名稱(chēng)的節(jié)點(diǎn) |
3 | public Text createTextNode(String data) | 普通 | 創(chuàng)建一個(gè)文本內(nèi)容節(jié)點(diǎn) |
4 | Element createElement(String tagName)throws DOMException | 普通 | 創(chuàng)建一個(gè)節(jié)點(diǎn)元素 |
5 | public Attr createAttribute(String name)throws DOMException | 普通 | 創(chuàng)建一個(gè)節(jié)點(diǎn)元素 |
Node 接口的常用方法
No. | 方 法 | 類(lèi) 型 | 描 述 |
---|---|---|---|
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)新節(jié)點(diǎn) |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)新節(jié)點(diǎn) |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)新節(jié)點(diǎn) |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)新節(jié)點(diǎn) |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)新節(jié)點(diǎn) |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)新節(jié)點(diǎn) |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)新節(jié)點(diǎn) |
聯(lián)系客服