使用具有特定文本值的子项删除XML节点

时间:2010-06-22 01:27:26

标签: 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>   

1 个答案:

答案 0 :(得分:0)

在com.vo.ShapeEventsVO的每个END ELEMENT事件上编写一个简单的SAX文档处理程序,查看xnuy,如果它适合,将ShapeEventsVO写入新文档。

您需要仅跟踪最新的mty,mtd和xnuy,以获得生成新的xnuy == 1文档所需的所有数据。