Java通过DOM解析XML

 1 package com.gcli.xml;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.xml.parsers.DocumentBuilder;
 6 import javax.xml.parsers.DocumentBuilderFactory;
 7 import javax.xml.parsers.ParserConfigurationException;
 8 
 9 import org.w3c.dom.Document;
10 import org.w3c.dom.Element;
11 import org.w3c.dom.NodeList;
12 import org.xml.sax.SAXException;
13 
14 public class XMLDOMTest {
15 
16     public static void main(String[] args) {
17         // (1)建立DocumentBuilderfactory ,用于取得DocumentBuilder
18         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
19         // (2)通过DocumentBuilderfactory取得DocumentBuilder
20         DocumentBuilder builder = null;
21         try {
22             builder = factory.newDocumentBuilder();
23         } catch (ParserConfigurationException e) {
24             e.printStackTrace();
25         }
26         // (3)定义Document接口对象,通过DocumenBuilder类进行DOM树转换操作
27         Document doc = null;
28         try {
29             doc = builder.parse("C:\javatest\bookstore.xml");
30         } catch (SAXException e) {
31             e.printStackTrace();
32         } catch (IOException e) {
33             e.printStackTrace();
34         }
35         // (4)查找book的节点
36         NodeList nl = doc.getElementsByTagName("book");
37         // (5)遍历book节点,并输出内容
38         for (int i = 0; i < nl.getLength(); i++) {
39             Element element = (Element) nl.item(i);
40             String category = element.getAttribute("category");
41             String title = element.getElementsByTagName("title").item(0)
42                     .getFirstChild().getNodeValue();
43             String author = element.getElementsByTagName("author").item(0)
44                     .getFirstChild().getNodeValue();
45             String year = element.getElementsByTagName("year").item(0)
46                     .getFirstChild().getNodeValue();
47             String price = element.getElementsByTagName("price").item(0)
48                     .getFirstChild().getNodeValue();
49             System.out.println("第" + (i + 1) + "本书,类别:" + category + ",名字:"
50                     + title + ",作者:" + author + ",出版时间:" + year + ",价格:"
51                     + price + "。");
52         }
53     }
54 
55 }
 1   <?xml version="1.0" encoding="ISO-8859-1" ?> 
 2 - <bookstore>
 3 - <book category="cooking">
 4   <title lang="en">Everyday Italian</title> 
 5   <author>Giada De Laurentiis</author> 
 6   <year>2005</year> 
 7   <price>30.00</price> 
 8   </book>
 9 - <book category="children">
10   <title lang="en">Harry Potter</title> 
11   <author>J K. Rowling</author> 
12   <year>2005</year> 
13   <price>29.99</price> 
14   </book>
15 - <book category="web">
16   <title lang="en">XQuery Kick Start</title> 
17   <author>James McGovern</author> 
18   <author>Per Bothner</author> 
19   <author>Kurt Cagle</author> 
20   <author>James Linn</author> 
21   <author>Vaidyanathan Nagarajan</author> 
22   <year>2003</year> 
23   <price>49.99</price> 
24   </book>
25 - <book category="web" cover="paperback">
26   <title lang="en">Learning XML</title> 
27   <author>Erik T. Ray</author> 
28   <year>2003</year> 
29   <price>39.95</price> 
30   </book>
31   </bookstore>
原文地址:https://www.cnblogs.com/crazydiver/p/4062543.html