首页 > 解决方案 > 如何获取一些 XML 标记的所有内容,包括 Java 中的子标记和内容

问题描述

在 Java 中,我知道许多不同的 XML 解析器,例如 DOM、S(t)AX 和变体。我多次使用它们,因此识别和读取一个标签的内容很简单。

如何读取起始标签和结束标签之间的所有(嵌套)内容?中间可以是许多其他标签。

当它们之间存在强制序列时,XLST 将无法解决问题,例如先获取 tag1(和所有内容),然后再获取 tag2。这将重复多次,直到扫描完整的 XML 文件。

内容将包括其他标签。该内容不应被解析为单独的标签或内容。

目的是在扫描文件时找到 3 个特殊标签。

我看了类似的问题,没有任何结果。我通过字符串处理(indexOf 等)对其进行了编程,但这可能不是最优雅的解决方案。

假设我有这个 XML 文件:

<parent
  <level1>
    <level2a>
      **** i need all content from this line
      <p>... etc ... </p>
      to this line ****
    </level2a>
  </level1>
  <level2b class="d">
    **** and all content from this line
    content of 2b possibly with child / other tags
    to this line *****
  </level2b>
  <level2b other="e">
    this content is not useful
  </level2b>
  ...
</parent>

假设我需要'<level2a>'和'<level2b class="d">' 的所有内容,包括任何子标签和内容。我怎样才能在 Java 中完成这项工作?

结果将是:

**** i need all content from this line
<p>... etc ... </p>
to this line ****

**** and all content from this line
content of 2b possibly with child / other tags
to this line *****

标签: javaxml-parsing

解决方案


似乎没有标准的解决方案。因此,扫描标签组并保持它们出现的顺序。保持顺序意味着我不能使用 XSLT 和类似的东西。

最后用 Sax 创建了我的通用解决方案。

如果您找到更好的解决方案,请告诉我。


推荐阅读