Java中的Xml文件解析(DOM)

Xml文件

Keys:

標籤</>,<?xml version=”1.0” encoding=”UTF-8”?>

樹狀節點

 

在Java程序中如何獲取xml文件的內容(解析)

解析的目的:獲取節點名、節點值、屬性名、屬性值

解析的四種方式:DOM, SAX, DOM4J, JDOM. 前兩個是sun官方

 

DOM解析方式(代碼及註解)

package com.darron.test;

 

import java.io.File;

 

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

 

import org.w3c.dom.Document;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

 

public classTest1 {

 

      /**

       * 通過DOM方式解析XML文件 author Darron date 2016.3.16

       * */

      public static void main(String[] args) {

           // 創建一個DocumentBuilderFactory對象

           DocumentBuilderFactorydbf =DocumentBuilderFactory.newInstance();

           try {

                 // 創建一個DocumentBuilder對象

                 DocumentBuilderdb = dbf.newDocumentBuilder();

                 // DocumentBuilder.parse(“url”)加載文件指向Document (導包org.w3c.dom

                 Documentdocument = db.parse(new File("books.xml"));

                 // 獲取所有節點(返回的list

                 NodeListbooklist = document.getElementsByTagName("book");

                 for (int i = 0; i < booklist.getLength(); i++) {

                      System.out.println("=====下面開始遍歷第" + (i + 1) + "本書=====");

                      // 遍歷每一個節點,通過item方法獲取一個book節點,索引從0開始

                      Nodebook = booklist.item(i);

                      // 獲取book節點裏面的所有屬性

                      NamedNodeMapattrs = book.getAttributes();

                      System.out.println("" + (i + 1) + "本書共有" + attrs.getLength());

                      // 遍歷book屬性

                      for (int j = 0; j < attrs.getLength(); j++) {

                            // 通過item方法獲取屬性通過getNodeName獲得名通過getNodeValue獲得值

                            System.out.println("屬性名" + attrs.item(j).getNodeName());

                            System.out.println("屬性名" + attrs.item(j).getNodeValue());

                      }

                      System.out.println("=====結束=====\n");

                 }

           }catch(Exception e) {

                 // TODO Auto-generated catch block

                 e.printStackTrace();

           }

 

      }

 

}

 

Xml文件

<?xml version="1.0"encoding="UTF-8"?>

<bookstore>

      <bookid="1">

           <name>三體</name>

           <author>劉念慈</author>

           <year>2015</year>

           <price>50</price>

      </book>

      <bookid="2">

           <name>神們自己</name>

           <author>阿西莫夫</author>

           <year>2016</year>

           <price>10</price>

      </book>

</bookstore>

 

 

備註:此外的三種方式不更多的介紹。注意getElementsByTagName("book")方法的參數需要與xml文件匹配。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章