您能否在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文档所需的所有数据。

10-02 09:59