java - 如何获取一些 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 *****
解决方案
似乎没有标准的解决方案。因此,扫描标签组并保持它们出现的顺序。保持顺序意味着我不能使用 XSLT 和类似的东西。
最后用 Sax 创建了我的通用解决方案。
如果您找到更好的解决方案,请告诉我。
推荐阅读
- opencv - 使用移动相机从立面图像创建全景图
- python - Ipywidgets 和 plotly 交互
- r - tidyr::expand_grid() 未按预期运行;我错过了什么?
- node.js - Nodejs Netsuite 不安的错误:(节点:1128)UnhandledPromiseRejectionWarning:未处理的承诺拒绝
- reactjs - next build `pages/404` 不能有 getInitialProps/getServerSideProps 但我没有 getInitialProps 或 getServerSideProps
- r - 如何使用ggplot为多列创建条形图?
- python - 相同的pyechart在不同的模板中渲染不同
- php - 仅在域主页上向未签名用户显示特定内容
- java - 字符串数据格式
- python - Azure PageBlob 上传新文件:x-ms-blob-content-length 错误