首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XML解析:为一个字段解析整个xml

XML解析:为一个字段解析整个xml
EN

Stack Overflow用户
提问于 2014-04-08 20:54:03
回答 3查看 197关注 0票数 0

我有一个非常大的XML,我接收它作为输入。在这个XML中,我只需要一个子元素。解析整个XML以仅检索一个元素似乎是一种性能过头。有没有更好的方法来解决这个问题?

一种方法是使用XML解析DocumentBuilder,然后使用XPath检索所需的字段。但是解析方法仍然会不必要地解析整个xml。在解析器的任何实现中是否有一个重载的解析方法,它获取XPath并仅根据xpath解析XML。

EN

回答 3

Stack Overflow用户

发布于 2014-04-08 20:58:33

您需要的是SAX解析器或类似的快速解析器。SAX解析器不会解析整个XML,它们只是解析xml的要点,直到找到所需的元素。

您可以在wikipedia's link中阅读有关SAX解析器的内容。还可以了解一下the java docs for SAX parser

票数 1
EN

Stack Overflow用户

发布于 2014-04-08 21:00:13

虽然没有办法通过解析来正确处理XML数据,但肯定有办法构建整个文档的内存表示。Java提供基于事件的SAX解析。您可以为XML事件实现一个事件处理程序,忽略在访问所需内容的过程中的所有内容,并在检索到要查找的部分后停止。

这是一个tutorial from Oracle showing how to use SAX APIs to retrieve counts of individual tags without building a document in memory

由于most XPath processors work with SAX as well,您可能会将事件提供给XPath处理器,并以这种方式查找所需的标记。但是,对于需要获取单个元素的情况来说,这可能是一种过度的做法。

票数 1
EN

Stack Overflow用户

发布于 2014-04-08 21:00:46

XPath operates over the document object model.,所以你必须有一个DOM才能计算一个XPath表达式。否则,它将针对什么进行验证?

因此,如果您不想解析文档,则可以使用XPath。其他选项是快速SAX解析,您可以忽略所有SAX解析事件,直到到达所需的元素,提取所需的文本,然后放弃其余的解析过程。

另一种选择是更简单:使用grep.

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

https://stackoverflow.com/questions/22937716

复制
相关文章

相似问题

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