当前位置: 技术问答>java相关
对XML文档解析方法大收集
来源: 互联网 发布时间:2015-07-30
本文导语: 小弟在学习过程中,遇到了几种解析方法,弄的有点晕,望各位仁兄解疑: 1: SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.new.SAXParser(); DefaultHandler handler = new DefaultHandlerProxy(er,dh,ch,eh); sp.parse(file,handler); ...
小弟在学习过程中,遇到了几种解析方法,弄的有点晕,望各位仁兄解疑:
1:
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.new.SAXParser();
DefaultHandler handler = new DefaultHandlerProxy(er,dh,ch,eh);
sp.parse(file,handler);
2.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
doc.parse(file);
请问,还有没有别的其他的解析方法呢?如果有的话,能不能详细的写下来呢?并做一个简略的说明?我想总结一下,对比一下,然后我想弄清楚他们都用在什么地方,有什么区别.(第一个方法是不是用在JAXP,第二个用在JDOM?我感觉在非JAXP中也可以用第一种方法,是不是?)
为什么要用工厂(Factory)呢?工厂在整个解析过程中起什么作用,是不是可以为工厂添加某些操作,而这些操作只能在工厂里添加吗?如下(对于第二种方法):
dbf.setValidating(validation);
dbf.setNameSpaceAware(true);
利用工厂的目的是不是就在这?
另外,我在书上看到在例子中有
.java文件
.dtd文件
.xml文件
.ent文件
在ENT文件中存放的是
等等,但没有别的东西,这个ENT文件是什么东东?它和DTD文件很相似啊,但为什么会用ENT呢?
小弟这里谢过了!!!
1:
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.new.SAXParser();
DefaultHandler handler = new DefaultHandlerProxy(er,dh,ch,eh);
sp.parse(file,handler);
2.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
doc.parse(file);
请问,还有没有别的其他的解析方法呢?如果有的话,能不能详细的写下来呢?并做一个简略的说明?我想总结一下,对比一下,然后我想弄清楚他们都用在什么地方,有什么区别.(第一个方法是不是用在JAXP,第二个用在JDOM?我感觉在非JAXP中也可以用第一种方法,是不是?)
为什么要用工厂(Factory)呢?工厂在整个解析过程中起什么作用,是不是可以为工厂添加某些操作,而这些操作只能在工厂里添加吗?如下(对于第二种方法):
dbf.setValidating(validation);
dbf.setNameSpaceAware(true);
利用工厂的目的是不是就在这?
另外,我在书上看到在例子中有
.java文件
.dtd文件
.xml文件
.ent文件
在ENT文件中存放的是
等等,但没有别的东西,这个ENT文件是什么东东?它和DTD文件很相似啊,但为什么会用ENT呢?
小弟这里谢过了!!!
|
给你一个最简单的吧
class MyContentHandler extends DefaultHandler
XMLParser parser = new SAXParser()
parser.setContentHandler(new MyContentHandler());
parser.parse(uri)
DOMParser parser = new DOMParser();
parser.parse(uri);
Document doc = parser.getDocument()
class MyContentHandler extends DefaultHandler
XMLParser parser = new SAXParser()
parser.setContentHandler(new MyContentHandler());
parser.parse(uri)
DOMParser parser = new DOMParser();
parser.parse(uri);
Document doc = parser.getDocument()
|
你提到1,2方法都是用JAXP的api进行解析。如果用具体的解析器进行解析,代码要根据具体的解析器来定,比如:Xerces,JDOM,XML4J等等...
用工厂方法的原因在于使你的解析代码独立于具体的解析器。如果要换一个其他解析器,只需将它置于classpath,而不用改动任何代码。
用工厂方法的原因在于使你的解析代码独立于具体的解析器。如果要换一个其他解析器,只需将它置于classpath,而不用改动任何代码。
|
XML Pull Parser(XPP),它对XML文档的性能是最佳的。
Xml Pull Parser (in short XPP) is a streaming pull XML parser and should be used when there is a need to process quickly and efficiently all input elements (for example in SOAP processors).
去这里看看吧:http://www.extreme.indiana.edu/xgws/xsoap/xpp/
Xml Pull Parser (in short XPP) is a streaming pull XML parser and should be used when there is a need to process quickly and efficiently all input elements (for example in SOAP processors).
去这里看看吧:http://www.extreme.indiana.edu/xgws/xsoap/xpp/
|
我只知道有DOM和SAX两种