xml解析相关内容 dom4j
2011-11-09 17:27
447 查看
DOM解析需要把XML文档全部载入内存并且在内存中生成DOM树节点对象。
SAX解析用事件驱动的方式当载入XML文档时就开始解析。
关于JAXP
即java API For XML Process
如果没有JAXP,那么对于每个厂家的解析器,都要根据厂家实现类的不同而改变
如XMLReader reader=new A厂家();
有了JAXP后等于在厂家解析器和应用程序之间提供了一层抽象,尽管JAXP没提供新的方法,
如对于SAX解析方式,有了JAXP就可以实现为:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParserFactory是一抽象类,由厂家解析器去继承生成特定解析器的工厂
然后由 SAXParser parser = factory.newSAXParser();生成解析器实例
这样当要换掉解析器时,应用程序不必修改代码.
对于DOM解析则主要依赖DocumentBuilderFactory这个抽象类
dom4j用的是SAX解析器分析XML文档,它提供了DOMReader和SAXReader解析的方式,DOMReader是将dom模型转换为DOM4j数据结构,而SAXReader用SAX解析的方式来获取数据,如下代码:
1.SAXReader reader =new SAXReader();
reader.addHandler("/people/name",new MyHandler());
reader.read(new File("\\info.xml"));
2.SAXReader reader =new SAXReader();
Document document=reader.read(new File("\\info.xml"));
doc.accept(new MyVisitor());
3.SAXReader reader =new SAXReader();
Document document=reader.read(new File("\\info.xml"));
第一种方式是用添加元素处理器的方式,让处理器类实现ElementHandler接口 实现其onStart(ElementPath path)和onEnd(ElementPath path) 即当解析器处理到addHandler("",...)指定的元素时调用事件处理器.这种方式是基于事件的.不必等到文档解析完毕才处理.
第二种方式是通过访问者模式访问XML数据,处理类实现Visitor接口或者继承实现了Visitor接口的VisitorSuppert对象,
实现对应的visit方法.
第三种是dom4j内部用sax解析获得数据对象后换转为dom4j文档对象.
1.dom4j输出
a.转换为dom对象输出
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
DOMWriter write=new DOMWriter();
Document d=write.write(document);//转化为dom模型对象
DOMSource source=new DOMSource(d);
StreamResult result=new StreamResult(new File("DOM4J.xml"));//创建文件对象接收数据
TransformerFactory tff=TransformerFactory.newInstance();
Transformer tf=tff.newTransformer();
tf.transform(source, result);//dom模型数据输出到指定文件中
b.转换为xml数据流输出
//格式化对象
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GB2312");
format.setIndent(" ");
XMLWriter writer=new XMLWriter(new FileWriter("DOM4J.xml"),format);
writer.write(document);
writer.close();
2.dom4j解析
a,SAXReader
接收xml文件
SAXReader reader=new SAXReader();
reader.read("");
b.DOMReader
接收dom对象转化为dom4j的document对象
DOMReader reader=new DOMReader();
org.dom4j.Document document=reader.read();
SAX解析用事件驱动的方式当载入XML文档时就开始解析。
关于JAXP
即java API For XML Process
如果没有JAXP,那么对于每个厂家的解析器,都要根据厂家实现类的不同而改变
如XMLReader reader=new A厂家();
有了JAXP后等于在厂家解析器和应用程序之间提供了一层抽象,尽管JAXP没提供新的方法,
如对于SAX解析方式,有了JAXP就可以实现为:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParserFactory是一抽象类,由厂家解析器去继承生成特定解析器的工厂
然后由 SAXParser parser = factory.newSAXParser();生成解析器实例
这样当要换掉解析器时,应用程序不必修改代码.
对于DOM解析则主要依赖DocumentBuilderFactory这个抽象类
dom4j用的是SAX解析器分析XML文档,它提供了DOMReader和SAXReader解析的方式,DOMReader是将dom模型转换为DOM4j数据结构,而SAXReader用SAX解析的方式来获取数据,如下代码:
1.SAXReader reader =new SAXReader();
reader.addHandler("/people/name",new MyHandler());
reader.read(new File("\\info.xml"));
2.SAXReader reader =new SAXReader();
Document document=reader.read(new File("\\info.xml"));
doc.accept(new MyVisitor());
3.SAXReader reader =new SAXReader();
Document document=reader.read(new File("\\info.xml"));
第一种方式是用添加元素处理器的方式,让处理器类实现ElementHandler接口 实现其onStart(ElementPath path)和onEnd(ElementPath path) 即当解析器处理到addHandler("",...)指定的元素时调用事件处理器.这种方式是基于事件的.不必等到文档解析完毕才处理.
第二种方式是通过访问者模式访问XML数据,处理类实现Visitor接口或者继承实现了Visitor接口的VisitorSuppert对象,
实现对应的visit方法.
第三种是dom4j内部用sax解析获得数据对象后换转为dom4j文档对象.
1.dom4j输出
a.转换为dom对象输出
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
DOMWriter write=new DOMWriter();
Document d=write.write(document);//转化为dom模型对象
DOMSource source=new DOMSource(d);
StreamResult result=new StreamResult(new File("DOM4J.xml"));//创建文件对象接收数据
TransformerFactory tff=TransformerFactory.newInstance();
Transformer tf=tff.newTransformer();
tf.transform(source, result);//dom模型数据输出到指定文件中
b.转换为xml数据流输出
//格式化对象
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GB2312");
format.setIndent(" ");
XMLWriter writer=new XMLWriter(new FileWriter("DOM4J.xml"),format);
writer.write(document);
writer.close();
2.dom4j解析
a,SAXReader
接收xml文件
SAXReader reader=new SAXReader();
reader.read("");
b.DOMReader
接收dom对象转化为dom4j的document对象
DOMReader reader=new DOMReader();
org.dom4j.Document document=reader.read();
相关文章推荐
- dom4j解析xml中指定元素下内容
- 使用dom4j解析xml文档以及用XPath实现相关的操作
- 使用dom4j解析xml标签,将标签属性与文本内容添加进集合
- Dom4j解析XML文本,遍历指定节点下的节点内容和属性,并存入List<Map<String,Object>
- DOM4J解析XML增加节点及内容
- JAXP,sax与dom4j解析xml文档及XPath在文档内容定位中的应用(持续更新,初学者的野路子、参考和想当然,不断学习和专业化)
- 使用dom4j来解析相关的xml字符串
- xml内容解析,包含命名空间时需特殊处理(dom4j)
- 在已知XML文件内容时,使用dom4j简单解析XML(String类型的XML)(用于服务器端)
- Dom4j解析xml内容——(三)
- dom4j解析xml中指定元素下内容
- dom4j解析xml文件
- dom4j解析xml
- dom4j解析xml
- jdom dom4j解析xml不对dtd doctype进行验证
- JDOM和DOM4J解析含有XML字符串的不同方式
- java中用dom4j解析xml
- java-web 之 第二讲 -- dom4j 解析 XML 文件
- dom4j解析XML
- Dom4j解析XML