XML解析

来源:互联网 发布:vc 小游戏源码 编辑:程序博客网 时间:2024/06/04 19:18
1.Dom解析主要特点:
1) 耗费内存,当解析超大的XML时慎用。

2) 可以方便的对xml进行增删改查操作。


2.Sax解析主要特点:
1) 不需要加载进内存,因此不存在占用内存的问题,可以解析超大XML。
2) 只能用来读取XML中数据,无法进行增删改。


3.JAXP 开发包是J2SE的一部分,它由javax.xml、org.w3c.dom 、org.xml.sax包及其子包组成。
4.使用JAXP进行Dom解析:
1)调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM解析器的工厂。
DocumentBuilderFactory builderFactory= DocumentBuilderFactory.newInstance();

2)调用工厂对象的 newDocumentBuilder方法得到DOM 解析器对象。
DocumentBuilder builder =builderFactory.newDocumentBuilder();

3)调用 DOM解析器对象的 parse()方法解析 XML文档,得到代表整个文档的 Document 对象,进行可以利用DOM特性对整个XML文档进行操作了。
Document doc= builder.parse(newFile("book.xml"));

4)javax.xml.transform包中的Transformer类用于把代表XML文件的Document对象转换为某种格式后进行输出。

获取Transformer工厂:
TransformerFactory transformerFactory  =TransformerFactory.newInstance();

获取Transfomer对象:
Transformertransformer = transformerFactory.newTransformer();

创建代表输入和输出的Source和Result对象:
Source source = newDOMSource(doc);
Result result = newStreamResult(new FIle("book.xml"));

使用Transformer将XMLSource 转换为 Result:
transformer.transform(source ,Result);

5. .使用JAXP进行SAX方式解析:
1)使用SAXParserFactory创建SAX解析工厂
SAXParserFactory spf =SAXParserFactory.newInstance();

2)通过SAX解析工厂得到解析器对象
SAXParser sp= spf.newSAXParser();

3)通过解析器对象得到一个XML的读取器:
XMLReaderxmlReader = sp.getXMLReader();

4)设置读取器的事件处理器:
xmlReader.setContentHandler(newMyContentHandler());

5)解析xml文件:
xmlReader.parse("book.xml");

6)DefaultHandler是一个类,他默认实现了ContentHandler接口,并提供了其中所有方法的空实现,我们可以自己写一个类继承这个类,复写其中我们需要使用到的方法。

6.DOM4j解析:

1)创建解析器:
SAXReaderreader = new SAXReader();

2)利用解析器读入xml文档:
Document document = reader.read(newFile("input.xml"));

3)获取文档的根节点:
Element root= document.getRootElement();

7.DOM4j将文档写入XML文件:

可以使用OutputFormat指定XMLWriter转换的编码为其他编码,并获得格式更好的XML文件:
OutputFormat format =OutputFormat.createPrettyPrint();  
format.setEncoding("gb2312");   
XMLWriter writer = newXMLWriter(newFileWriter("output.xml"),format);

8.使用DOM4j—Xpath需要导入包:jaxen-1.1-beta-6.jar
0 0
原创粉丝点击