1. 程式人生 > >XML與web開發-01- 在頁面顯示和 XML DOM 解析

XML與web開發-01- 在頁面顯示和 XML DOM 解析

前言: 關於 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>[email protected]</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>
[email protected]
</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>[email protected]</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,用來得到 DocumentBuilder
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        //(2)通過 DocumentBuilderFactory,來得到 DocumentBuilder
        DocumentBuilder 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());

    }

}

執行就會在控制檯列印: