2017-06-15 198 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"); 
    } 

}