首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAXParser与XMLReader的区别

SAXParser与XMLReader的区别
EN

Stack Overflow用户
提问于 2012-12-14 20:46:41
回答 3查看 11.8K关注 0票数 7

如果我只需要解析XML,那么下面两个代码片段之间的区别是什么?

1.使用SAXParser parse方法:

代码语言:javascript
复制
SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
parser.parse(new File(filename), new DocHandler());

现在使用从SAXParser获取的XMLReader的parse方法

代码语言:javascript
复制
SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
XMLReader xmlparser = parser.getXMLReader();
xmlparser.setContentHandler(new DocHandler());
xmlparser.parse(new InputSource("test1.xml"));   

尽管获得了更多的灵活性,但还有其他区别吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-14 21:46:21

SAXParserparse方法只委托给XMLReader的内部实例,通常更方便。对于一些更高级的用例,你必须使用XMLReader。下面是一些例子

解析implementation

  • Setting ErrorHandler

  • Switching时,
  • 将非标准功能设置为ContentHandlerEntityResolver

处理程序的不同类

票数 9
EN

Stack Overflow用户

发布于 2012-12-14 21:36:51

正如您注意到的,XMLReader属于org.xml.sax (来自http://www.saxproject.org/),而SAXParser属于javax.xml.parsers。SAXParser在内部使用XMLReader。您可以直接使用XMLReader

代码语言:javascript
复制
XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler(handler);
xr.setDTDHandler(handler);
...

但是您会注意到,SAXParser使用起来更方便。也就是说,添加SAXParser是为了方便。

票数 3
EN

Stack Overflow用户

发布于 2012-12-14 20:51:47

http://docs.oracle.com/javase/1.5.0/docs/api/org/xml/sax/XMLReader.html。看看XML阅读器的链接,再看看下面的sax解析器链接。http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/SAXParser.html

使用不同的解析器取决于您希望解析器做什么。如果您正在修改、删除xml中的内容,您可以使用W3C Dom解析器。如果只想解析和获取元素,可以使用SAX解析器。有一些是有的。所以这真的取决于你想要什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13878998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档