【问题标题】:How to extract a big list of characters from xml file in Java如何从Java中的xml文件中提取大量字符
【发布时间】:2011-07-19 23:48:33
【问题描述】:

我有一个很大的 xml 文件,我不想解析它,我只想存储 <information>...</information> 之间的每个字符,它们是 xml 文件中的标签。

我该怎么做?

【问题讨论】:

  • 您关心像& 这样的实体是显示为一个字符还是五个?您是否关心您指定的标签之间是否还有其他标签?如果这两个问题的答案是“是”,那么您想使用解析器。否则将文件读入字符串并搜索标签。
  • 我使用了一个字符串缓冲区来加载 xml 文件,它只能加载一半的 xml 文件...我认为字符串缓冲区应该很大
  • 如果你的意思是你所说的,你可以简单地使用正则表达式。
  • 你的意思是我可以在将 xml 文件存储到 StringBuffer 之前对其使用正则表达式吗?

标签: java xml search xpath extract


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果不解析文件,您将无法准确找到<information> 元素中的字符。你可以做一些在 99% 的时间里都有效的事情,但是当有人做了你没想到的事情时它会中断,比如在开始标签中放置空格,或者有一个注释掉的 <information> 元素,或者把部分<information> 外部实体中的元素。

    咬紧牙关。如果是 XML,则需要 XML 解析器才能读取。

    【讨论】:

    • 我不想解析它。我只想要 2 个标签之间的所有内容。解析它会丢失很多我需要的数据。我不能只说获取这个 xml 文件,查找 并从那里获取所有内容到 吗?
    • 理论上完全有可能,但我不知道有一个 XML 解析器可以通过这种方式访问​​未解析的数据。也许这表明这是一个不寻常的要求,也许这意味着您应该寻找解决问题的替代方案?
    【解决方案3】:

    您可能想解释为什么您不想解析它,因为这将有助于提出其他解决方案。

    话虽如此,如果您可以为该节点构造一个 XPath,那么您始终可以使用 XPath 获取该信息。见this tutorial

    更新

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

    【讨论】:

    • 我不想解析它,因为我想保留每一个字符,例如标签 和属性..etc 我想到了 Xpath,但我从未使用过它
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多