前言: 關于 xml 特點和基礎知識,可以菜鳥教程進行學習:http://www.runoob.com/xml/xml-tutorial.html
本系列筆記,主要介紹 xml 在 web 開發時需要了解的知識
XML 在頁面顯示數據
?XML 指可擴展標記語言(eXtensible Markup Language)。
?XML 被設計用來傳輸和存儲數據。
一、怎么在頁面上只顯示數據?
?大家在網頁上可能都見過這樣的 xml 文件:
?這是沒有任何樣式的 xml,打開 tomcat 什么的服務器,在網頁上瀏覽 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>
?怎樣在頁面上只顯示文字,并加上特定的樣式呢?那就要用到 css 了
(1)先自己寫一個 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 文件中引入這個 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)就會這樣顯示了:
(4)然后,xml 也可以像 html 標簽那樣,加屬性,例如:
<tel id = "userTel">66666</tel>
XML與web開發-01- xml 解析
在 xml 文件,更多的用來描述信息的內容,
所以在得到一個 XML 文檔后,應該利用程序按照其中元素的定義名稱取出對應內容,
這樣的操作就稱為 xml 解析。
W3C 定義了 SAX 和 DOM 兩種解析方式
XML - DOM 解析操作
在應用程序中,基于 DOM 的 XML 分析器將一個 XML 文檔轉換成一個對象模型的集合,通常稱為 DOM 樹
應用程序正是通過對這個對象模型的操作,來實現對 XML 文檔數據的操作。
準備一個 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.目錄,我是新建一個包 xml ,再新建一個 dom.java
2.注意解析的 xml 路徑,要根據自己的路徑設置
3.如果自己寫代碼,注意一下導包,Document,是 org.w3c.dom.Document
// 目錄,我是新建一個包 xml ,再新建一個 dom.java
package xml;import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;//注意 Document,是 org.w3c.dom.Document
//默認導包會是 javax 那個,注意一下
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,用來得到 DocumentBuilderDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//(2)通過 DocumentBuilderFactory,來得到 DocumentBuilderDocumentBuilder builder = null;try{builder = factory.newDocumentBuilder();}catch (ParserConfigurationException e){e.printStackTrace();}//(3)定義Document doc = null;try {//讀取指定路徑的 xml 文件,要先有一個這樣的文件doc = builder.parse("D://xml/" + File.separator + "first.xml");} catch (SAXException e){e.printStackTrace();} catch (IOException e){e.printStackTrace();}//(4)查找 name 的節點NodeList nl = doc.getElementsByTagName("name");//(5)輸出 NodeList 中第一個子節點中文本節點的內容System.out.println("姓名:" + nl.item(0).getFirstChild().getNodeValue());}}
運行就會在控制臺打印:
DOM 解析4個核心操作接口:
- Document:此接口代表了整個 XML 文檔,代表整個 DOM 樹的樹根,提供了對文檔中的數據進行訪問和操作的入口,
通過 Document 節點可以訪問 XML 文件中所有的元素內容。Document 接口的常用方法如下表:
? Document 接口的常用方法
No. | 方 法 | 類 型 | 描 述 |
---|---|---|---|
1 | public NodeList getElementsByTagName(String name) | 普通 | 取得指定節點名稱的 NodeList |
2 | public Element createElement(String tagName)throws DOMException | 普通 | 創建一個指定名稱的節點 |
3 | public Text createTextNode(String data) | 普通 | 創建一個文本內容節點 |
4 | Element createElement(String tagName)throws DOMException | 普通 | 創建一個節點元素 |
5 | public Attr createAttribute(String name)throws DOMException | 普通 | 創建一個節點元素 |
- Node:此接口在整個 DOM 樹中具有劇組輕重的地位,DOM 操作的核心接口中有很大一部分是
從 Node 接口繼承過來的。例如,Document、Element、Atrr 等接口
? Node 接口的常用方法
No. | 方 法 | 類 型 | 描 述 |
---|---|---|---|
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當前節點下增加一個新節點 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當前節點下增加一個新節點 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當前節點下增加一個新節點 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當前節點下增加一個新節點 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當前節點下增加一個新節點 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當前節點下增加一個新節點 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在當前節點下增加一個新節點 |