2017-06-15 95 views
1

我有几行米的xml。有相同的父标签,但多于一个子标签,其中一个子标签的值为*。我的问题是,我怎样才能删除所有的父母标签,其中的儿童标签包含*谢谢你的建议!删除子标签/元素

+0

你能提供简化版的布局吗?例如:这是一个单一的大文件,还是这是基于XML的文档存储中的小型XML文档的集合? –

+0

嗨,它只有一个大的XML文件(225MB),如果有帮助,这里是结构.. \t ... \t \t \t \t \t \t .... \t \t * \t

回答

0

这是一个非常简单的应用程序,如果你知道如何使用XPath ..它基于VTD-XML。我使用的XPath是/ root/comment [change ='*']。

import com.ximpleware.*; 
import java.io.*; 
public class XPathRemove { 

    public static void main(String[] args) throws VTDException, IOException{ 
     // TODO Auto-generated method stub 
     String inputXML = "<root><comment><change/></comment><comment><change>*</change></comment></root>"; 
     VTDGen vg= new VTDGen(); 
     vg.setDoc(inputXML.getBytes()); 
     vg.parse(false); 
     VTDNav vn = vg.getNav(); 
     AutoPilot ap= new AutoPilot(vn); 
     ap.selectXPath("/root/comment[change='*']"); 
     XMLModifier xm = new XMLModifier(vn); 
     int i=0; 
     while((i=ap.evalXPath())!=-1){ 
      xm.remove(); // remove all the selected comment node 
     } 
     xm.output("d:\\xml\\XPathRemove.xml"); 
    } 

}