我目前正在开发一个应用程序,使用SAX从互联网检索数据。我之前使用它来解析简单的XML文件,例如Google Weather API。但是,我感兴趣的网站将解析提升到了一个新的水平。页面很大,看起来很乱。我只需要检索一些特定的行;其余的对我没有用处。
是否可以跳过那些无用的行/标签,还是我必须一步一步来?使用SAX解析器解析大型XML文件(跳过一些行/标签)
回答
您可以尝试使用将在场景后使用SAX来解析xml的XPath。这里的缺点是XML将在每次调用Xpath评估方法时被解析。
感谢您的回复,我会研究这种可能性! – Amine 2010-08-05 19:33:47
你要读取特定的标签,然后DOM解析器比SAX解析器parser..SAX快很多,如果你想大解析XML文件是非常有用的..
SAX解析比DOM快得多。 DOM还要求将整个文档带入内存。 – 2010-08-05 15:07:58
非常感谢您的回答,我非常感谢您的帮助,我将尝试使用DOM并查看我得到的输出结果。 – Amine 2010-08-05 19:35:43
是的,你可以做到这一点,只是忽略标签你不感兴趣。但是注意,整个文件将被解析为这个(DefaultHandler的IMPL)
public startElement(String uri, String localName,
String qName, Attributes attributes) {
if(localName.equals("myInterestingTag") {
// do your thing....
}
}
public void endElement(String uri, String localName, String qName) {
if(localName.equals("myInterestingTag") {
// do your thing....
}
}
public void characters(char[] ch, int start, int length) {
// if parsing myinteresting tag... do some stuff.
}
谢谢,这正是我通常这样做;)! – Amine 2010-08-05 19:36:06
见我的回答对使用SAX跳过的策略类似的问题/忽略标签:
它涉及XMLReader可以切换ContentHandlers。当您阅读移植XML文档时,您只需交换一个与事件无关的ContentHandler即可。当要被忽略的部分结束时,它将控制权交还给用于处理XML内容的内容处理程序。
你的答案肯定有助于实现我的目标!非常感谢 -Cheers – Amine 2010-08-05 19:37:26
我喜欢普通消化器。它允许您指定针对特定标签的规则。规则只有在遇到标签时才会执行。
消化器建立在萨克斯之上,因此具有所有萨克斯特征以及选择性解析特定标签所需的特异性。它还使用了一个堆栈,当遇到相应的标记时,它会使用新元素推送,并在元素结束时弹出。
我用它来解析我所有的配置文件。
非常感谢Raja,我会研究这个解决方案! – Amine 2010-08-05 19:38:48
- 1. 使用Sax解析大型XML文件
- 2. SAX解析器跳过一些不被解析的元素?
- 3. 使用sax解析器解析xml具有不同的标签
- 4. 使用android sax解析器解析XML
- 5. 使用sax解析器解析XML
- 6. 用SAX解析器解析XML
- 7. 使用SAX解析器解析java中的XML文件
- 8. 使用SAX解析器解析UTF-8 XML文件的问题
- 9. 使用SAX解析器,如何解析java中的xml文件
- 10. 使用SAX解析器解析具有多个XML标记的XML文件
- 11. SAX XML解析器或DOM解析器?
- 12. 解析带有太多标签的SAX解析器的XML文件
- 13. 在SAX解析器中解析大型XML文件时无内存异常
- 14. 使用DOM解析器和SAX解析器进行Android XML解析的区别
- 15. 使用SAX解析器进行Android XML解析
- 16. 使用Sax解析本地XML文件
- 17. 如何使用SAX解析大型XML文件?
- 18. 解析XML跳过标记
- 19. 跳过异常的python sax解析器
- 20. 用Nokogiri的SAX解析器解析Redis的大XML
- 21. 解析XML使用SAX
- 22. 如何使用SAX XML解析器解析XML
- 23. 解析大型XML文件?
- 24. 的Android - 解析使用SAX解析器
- 25. 无法解析使用SAX解析器
- 26. SAX解析器:从XML
- 27. 多级XML SAX解析器
- 28. SAX解析器XML援助
- 29. SAX解析器和XAPI xml
- 30. 使用Sax解析器,Java处理XML中的空标签
我想延长VTD-XML允许您在一个内存有效的方式或随机访问,远胜于SAX的Apache沼气池 – 2011-03-02 03:01:40