2011-07-19 34 views
0

我有一个很大的xml文件,我不想分析它,我只是想存储<information>...</information>之间的每个字符,它们是xml文件中的标记。如何从Java中的xml文件中提取大字符

我该怎么做?

+0

您是否在意像'&'这样的实体显示为一个字符还是5?您是否在意您指定的标签之间是否有其他标签?如果对这些问题的答案是“是”,那么你想使用解析器。否则将文件读入字符串并搜索标签。 – parsifal

+0

我用一个字符串缓冲区来加载xml文件,它只能加载xml文件的一半......我认为字符串缓冲区被假设为很大 – dronyx

+0

如果你的意思是你说的话,你可以简单地使用一个正则表达式。 – bdares

回答

0

您可能想解释为什么您不想解析它,因为这有助于建议其他解决方案。这就是说,如果您可以为该节点构建XPath,那么您始终可以使用XPath获取该信息。请参阅this tutorial

UPDATE

鉴于新的信息,这是不是你想要的解决方案。如果您想将xml作为字符串处理,请将其读入到StringBuilder(StringBuffer的更快,线程不安全的版本)中,这是您的最佳选择。如果您在使用StringBuffer时遇到问题,请发布您尝试的代码和错误消息。它的最大尺寸是java.lang.Integer.MAX_VALUE这是2147483647.

+0

我不想解析它,因为我想保留每一个字符,例如像标签<>和属性..等等我想到Xpath但我从来没有使用它 – dronyx

2

如果问题是您尝试提取的数据适合内存,但整个XML文件不适用,请使用流式解析器(如XPP)。

1

无法在不解析文件的情况下在<information>元素中准确找到字符。您可以在99%的时间内完成某些工作,但如果某人执行了您没有想到的事情,例如在开始标记中放入空白,或者注释掉元素或将<information>元素的一部分在外部实体中。

咬住子弹。如果是XML,则需要使用XML解析器来读取它。

+0

我不想解析它。我突然想要2个标签之间的一切。解析它将会丢失我需要的大量数据。我不能只是说这个XML文件,寻找并从那里获取一切到? – dronyx

+0

这在理论上是完全可能的,但我不知道用这种方式提供对未解析数据的访问的XML解析器。也许这表明这是一个不寻常的要求,也许这意味着你应该看看你的问题的替代解决方案? –

0

考虑到您不想使用解析器,而您只是想提取两个标签之间的所有字符,我宁愿建议您将xml内容作为字符串提取,并使用简单的正则表达式匹配来提取两个标签之间的部分。

相关问题