xml代码:
<?xml version="1.0" encoding="GB2312"?>
<RESULT>
<VALUE>
<NO>A1234</NO>
<ADDR>郑州市金水区</ADDR>
</VALUE>
<VALUE>
<NO>B1234</NO>
<ADDR>郑州市二七区</ADDR>
</VALUE>
</RESULT>
Java代码:
package com.util;
import java.io.File;
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.NodeList;
import org.xml.sax.SAXException;
public class ReadXmlByDom {
public static void main(String args[]) {
File f = new File("F:\\car.xml");
Dom(f);
}
public static void Dom(File f) {
// Document可以看作是XML在内存中的一个镜像,那么一旦获取这个Document 就意味
//可以通过对内存的操作来实现对XML的操作
// 首先第一步获取XML相关的Document
try {
// 很明显该类是一个单例,先获取产生DocumentBuilder工厂
// 的工厂,再通过这个工厂产生一个DocumentBuilder,
// DocumentBuilder就是用来产生Document的
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
// 根节点获得方法
// Element root=doc.getDocumentElement();
// System.out.println("根节点是"+root.getTagName());
NodeList nl = doc.getElementsByTagName("VALUE");
// 父节点获得方法
// Node fatherNode=nl.item(0);
// System.out.println("父节点是"+fatherNode.getNodeName());
// NamedNodeMap attributes=fatherNode.getAttributes();
// 遍历XML
for (int i = 0; i < nl.getLength(); i++) {
System.out.println("车牌号是"
+ doc.getElementsByTagName("NO").item(i)
.getFirstChild().getNodeValue());
System.out.println("车主地址是"
+ doc.getElementsByTagName("ADDR").item(i)
.getFirstChild().getNodeValue());
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
result:
车牌号是A1234
车主地址是郑州市金水区
车牌号是B1234
车主地址是郑州市二七区