解析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.它是基于事件流的方式进行解析.感兴趣的可以问问度娘.

你可能感兴趣的:(解析xml)