首页 > 代码库 > 解析XML文件

解析XML文件

 在WEB开发中,肯定会遇到对XML文件的解析.现在流行的解析XML文档的有很多,笔者下面用DOM4J演示如何解析XML文档.

 首先下载一个开源的jar包,我下载的是dom4j-1.6.1.jar.然后导入到自己的工程中.接着新建一个简单的.XML文件.我的如下:

1 <bookstore name="123" value="456">2     <book>3         <bookname>小人书</bookname>4         <author>张三</author>5         <price>50</price>6     </book>7 </bookstore>

 现在对这个.XML文件进行解析.代码如下:

 1 package com.test.xml; 2  3 import java.io.File; 4 import java.util.Iterator; 5 import java.util.logging.Logger; 6  7 import org.dom4j.Attribute; 8 import org.dom4j.Document; 9 import org.dom4j.DocumentException;10 import org.dom4j.Element;11 import org.dom4j.io.SAXReader;12 13 public class ParseXML {14     15     private final static String filename = "book.xml";16     17     public static void main(String[] args) {18         SAXReader reader = new SAXReader();19         20         try{21             Document document = reader.read(new File(filename));22             //获得根元素23             Element rootElement = document.getRootElement();24             //获得根元素的属性25             String rootAttribute = "";26             for(Iterator iterator = rootElement.attributeIterator();iterator.hasNext();){27                 Attribute attribute = (Attribute)iterator.next();28                 rootAttribute += (attribute.getName()+",");29             }30             pp(filename + "文件的根元素为: " + rootElement.getName() + "(属性有: " + rootAttribute + ")");31             32             //对根元素下一级的子元素遍历33             for(Iterator iterator1 = rootElement.elementIterator();iterator1.hasNext();){34                 Element element1 = (Element)iterator1.next();35                 pp(rootElement.getName() + "的子元素有: " + element1.getName());36                 37                 //遍历子元素的子元素38                 String sonelement = "";39                 for(Iterator iterator2 = element1.elementIterator();iterator2.hasNext();){40                     Element element2 = (Element)iterator2.next();41                     sonelement += (element2.getName()+",");42                 }43                 pp(element1.getName() + "的子元素有: " + sonelement);44             }45             46         }catch(DocumentException e){47             //采用日志的方式记录错误48             Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).info(e.getMessage());49         }50     }51     52     public static void pp(Object o){53         System.out.println(o.toString());54     }55 }

 dom4j是将XML文档看做一个document对象(树结构)进行解析.还有一种方式解析XML,叫做SAX.它是基于事件流的方式进行解析.感兴趣的可以问问度娘.