您能否建议满足我的 Java 需求(如下)的最佳方法。我尝试过使用 XPath,但我必须重新创建整个 XML。我希望有一种简单的方法可以做到这一点。
我想删除 xnuy != 1 的节点
示例输入 XML:
<object-stream>
<com.vo.ShapeEventsVO>
<mtx>198.0</mtx>
<mty>79.0</mty>
<xnuy>1</xnuy>
</com.vo.ShapeEventsVO>
<com.vo.ShapeEventsVO>
<mtx>198.0</mtx>
<mty>79.0</mty>
<xnuy>1</xnuy>
</com.vo.ShapeEventsVO>
<com.vo.ShapeEventsVO>
<mtx>198.0</mtx>
<mty>79.0</mty>
<xnuy>2</xnuy>
</com.vo.ShapeEventsVO>
</object-stream>
输出 XML:
<object-stream>
<com.vo.ShapeEventsVO>
<mtx>198.0</mtx>
<mty>79.0</mty>
<xnuy>1</xnuy>
</com.vo.ShapeEventsVO>
<com.vo.ShapeEventsVO>
<mtx>198.0</mtx>
<mty>79.0</mty>
<xnuy>1</xnuy>
</com.vo.ShapeEventsVO>
</object-stream>
最佳答案
编写一个简单的 SAX 文档处理程序 - 在 com.vo.ShapeEventsVO 的每个 END ELEMENT 事件上,查看 xnuy,如果适合,则将该 ShapeEventsVO 写入新文档。
您只需跟踪最近的 mty、mtd 和 xnuy,即可获得生成新的 xnuy==1 文档所需的所有数据。
关于java - 删除具有特定文本值的子节点的 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089622/