1. DOM最基本解析XML;
2. SAX基于事件解析XML; http://gaofulai1988.iteye.com/blog/2262677
3. JDOM不错的解析XML; http://gaofulai1988.iteye.com/blog/2262680
4. DOM4J好用的解析XML; http://gaofulai1988.iteye.com/blog/2262683
5. XPATH解析XML; http://gaofulai1988.iteye.com/admin/blogs/2262787
6. XML与Bean之间的转换。 http://gaofulai1988.iteye.com/admin/blogs/2262787
这一个是讲DOM解析XML,DOM的基本思想是将XML文档解析成一个树型,然后依据父子节点、弟兄节点来遍历这棵树。所以它的最大特点是在解析前,先将整个文档载入,这也是它最大的不足之处,如果这个XML文件很大,怎么办呢?
在使用DOM之前,有两种概念提前说一下,Node(节点)和Element(元素)之间的区别,有一个结论是: Element一定是Node,Node不一定是Element。如何来理解?
<name>test</name>
name既是一个节点也是一个元素,而test只是一个节点,而不是一个元素。
好了,看一个例子吧。先准备好xml文件。
<?xml version="1.0" encoding="UTF-8"?> <Students> <student> <NO id="123">123456</NO> <NAME>abc</NAME> </student> <student> <NO id="234">456789</NO> <NAME>def</NAME> </student> </Students>
DOM解析代码如下:
public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException { // xml文件的路径 File f = new File("D:" + File.separator + "test.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // 解析成一个Document对象 Document doc = builder.parse(f); // 根据标签名获取所有的节点 NodeList nl = doc.getElementsByTagName("student"); for (int i = 0; i < nl.getLength(); i++) { // 输出标签的值 System.out.print("No:" + doc.getElementsByTagName("NO").item(i).getFirstChild() .getNodeValue()); System.out.print("\taddress:" + doc.getElementsByTagName("NAME").item(i).getFirstChild() .getNodeValue()); // Element一定是Node, Node不一定是Element Element e=(Element)doc.getElementsByTagName("NO").item(i); // 输出属性值 System.out.println("\tid="+e.getAttribute("id")); } }