国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAVA解析XML之DOM方式

2019-11-15 01:04:36
字體:
來源:轉載
供稿:網友
java解析xml之DOM方式JAVA解析XML之DOM方式準備工作

  創建DocumentBuilderFactory對象;

  創建DocumentBuilder對象;

  通過DocumentBuilder對象的parse方法加載xml

解析XML文件的屬性名和屬性值解析XML文件的節點名和節點值  常用方法如下:

    getElementsByTagName();

    getLength();

    item();

    getNodeName();

    getNodeValue();

    getNodeType();

    *getAttributes(); node

    *getAttribute("name"); element

    getChildNodes();

    getFirstChild();

  常用的節點類型:

    

下面直接上代碼
package pers.zww.xml;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class Dom {    public static void main(String[] args) {        // 創建DocumentBuilderFactory對象        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();        // 創建DocumentBuilder對象        DocumentBuilder db;        try {            db = dbf.newDocumentBuilder();            // 通過DocumentBuilder對象的parse方法加載xml            Document document = db.parse("books.xml");            // 獲取book節點集合            NodeList bookList = document.getElementsByTagName("book");            // 通過noodlist的getLength()方法,獲取長度            System.out.PRintln(bookList.getLength());            // 遍歷book節點            for (int i = 0; i < bookList.getLength(); i++) {                System.out.println("=======================");                // item(i)方法獲取節點                Node book = (Node) bookList.item(i);                // 獲取book節點的所有屬性集合                NamedNodeMap attrs = book.getAttributes();                // 遍歷book的屬性                System.out.println("第" + (i + 1) + "本書共有" + attrs.getLength()                        + "個屬性");                for (int j = 0; j < attrs.getLength(); j++) {                    /*                     * 節點類型 TYPE                     * element   1                     * attr      2                     * text      3                     */                    /*                     * 若只有一個屬性則                     * 將book節點node強制類型轉換                     * 用element的getAttribute("id")方法                     */                    // item(i)方法獲取屬性                    Node attr = attrs.item(j);                    // 獲取屬性名                    System.out.print("屬性名:" + attr.getNodeName());                    // 獲取屬性值                    System.out.println(" && 屬性值:" + attr.getNodeValue());                    //解析book的子節點                    NodeList childNodes=book.getChildNodes();                    //獲取每個節點的節點名/值                    System.out.println("共有"+childNodes.getLength()+"個子節點");                    for (int k = 0; k < childNodes.getLength(); k++) {                        //區分text類型的node以及element類型的node                        if (childNodes.item(k).getNodeType()==Node.ELEMENT_NODE) {                            //獲取element類型節點的節點名                            System.out.print("節點名 "+childNodes.item(k).getNodeName());                            //獲取element類型節點的節點值                                                        //法一:                            System.out.println(" && 節點值 "+childNodes.item(k).getFirstChild().getNodeValue());                                                        //法二:                            //子節點的所有值                            //System.out.println(" && 節點值 "+childNodes.item(k).getTextContent());                                                        /*                             * 不同點:                             * 若在name節點下再添加一個節點例如<h>xiumu</h>時,法一的值為null,                             * 而法二的值為xiumuJAVA編程思想                             */                        }                    }                }            }        } catch (ParserConfigurationException | SAXException | IOException e) {            e.printStackTrace();        }    }}
View Code

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <bookstore> 3     <book id="1"> 4         <name><h>xiumu</h>JAVA編程思想</name> 5         <anthor>****</anthor> 6         <year>2000</year> 7     </book> 8     <book id="2"> 9         <name>瘋狂JAVA系列</name>10         <anthor>李剛</anthor>11         <price>89</price>12     </book>13 </bookstore>
View Code要點

  當已確定節點的屬性只有一個時,可將節點強制轉換為element,并調用其getAttribute("name")方法;

  getLength()方法子節點的個數時,將空白和換行也算了進去;

參考資料

  慕課網JessicaJiang老師視頻教程


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牟定县| 蓬溪县| 成都市| 左贡县| 西贡区| 普洱| 武汉市| 安庆市| 林口县| 嘉禾县| 日土县| 玉屏| 潢川县| 海原县| 巴楚县| 江安县| 岚皋县| 榕江县| 冀州市| 临猗县| 缙云县| 印江| 读书| 淮安市| 措美县| 桃园县| 扎鲁特旗| 庆城县| 马关县| 运城市| 竹北市| 兴仁县| 灵台县| 曲松县| 大冶市| 黄平县| 黔东| 桐庐县| 龙南县| 浦县| 合水县|