1、XML文件persons.xml内容如下:
2、java解析代码如下:
<?
xml version="1.0" encoding="UTF-8"
?>
< persons >
< person >< name > jak </ name >< sex > 男 </ sex ></ person >
< person >
< name > jcy </ name >
< sex > 女 </ sex >
</ person >
</ persons >
< 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 }
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 }