java - 删除具有特定文本值的子节点的 XML 节点

标签 java xml

您能否建议满足我的 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/

相关文章:

java - 线程安全与否?

xml - 限制 XSD 中嵌套元素的深度

python - BeautifulSoup 用原始 xml 替换标签而不解析/转义

java - 如何从 Android 中的文本输入框获取用户输入?

java - JAVA 中的 StringTokenizer

java - 无法在具有 <DOCTYPE> 标记的 XML 文件中从 JAVA 运行 Xpath 查询

java - 将我的布局转换为圆环形状

xml - 如何在 Swift 中解析 XML 附件

java - 为什么Java和Go的gzip会得到不同的结果?

java - Servlet 接收空字符串