1、XML文件persons.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person><name>jak</name><sex>男</sex></person>
<person>
<name>jcy</name>
<sex>女</sex>
</person>
</persons>
2、java解析代码如下:
1 package net.vicp.jiasoft;
2
3 import javax.xml.parsers.*;
4 import java.io.IOException;
5 import org.xml.sax.SAXException;
6 import org.w3c.dom.Document;
7 import org.w3c.dom.NodeList;
8 import org.w3c.dom.Node;
9
10 /**
11 * <p>Title: Dom解析XML示例</p>
12 *
13 * <p>Description: Dom解析XML</p>
14 *
15 * <p>Copyright: Copyright (c) 2008</p>
16 *
17 * <p>Company: Jiasoft</p>
18 *
19 * @author Jak.Shen
20 * @version 1.0
21 */
22 public class DomXml {
23 public void parsersXml() {
24 //实例化一个文档构建器工厂
25 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
26 try {
27 //通过文档构建器工厂获取一个文档构建器
28 DocumentBuilder db = dbf.newDocumentBuilder();
29 //通过文档通过文档构建器构建一个文档实例
30 Document doc = db.parse("persons.xml");
31 //获取所有名字为 “person” 的节点
32 NodeList nl1 = doc.getElementsByTagName("person");
33 int size1 = nl1.getLength();
34 for (int i = 0; i < size1; i++) {
35 Node n = nl1.item(i);
36 //获取 n 节点下所有的子节点。此处值得注意,在DOM解析时会将所有回车都视为 n 节点的子节点。
37 NodeList nl2 = n.getChildNodes();
38 //因为上面的原因,在此例中第一个 n 节点有 2 个子节点,而第二个 n 节点则有 5 个子节点(因为多了3个回车)。
39 int size2 = nl2.getLength();
40 for (int j = 0; j < size2; j++) {
41 Node n2 = nl2.item(j);
42 //还是因为上面的原因,故此要处判断当 n2 节点有子节点的时才输出。
43 if (n2.hasChildNodes()) {
44 System.out.println(n2.getNodeName() + " = " +
45 n2.getFirstChild().getNodeValue());
46 }
47 }
48 }
49 } catch (ParserConfigurationException ex) {
50 ex.printStackTrace();
51 } catch (IOException ex) {
52 ex.printStackTrace();
53 } catch (SAXException ex) {
54 ex.printStackTrace();
55 }
56 }
57
58 public static void main(String[] args) {
59 DomXml domxml = new DomXml();
60 domxml.parsersXml();
61 }
62 }