2017-06-15 16 views
1

私は数ミリオンのxml行を持っています。同じ親タグがありますが、複数の子タグがあり、そのうちの1つの子タグの値は*です。私の質問は、どのように私は子タグが含まれている親タグのすべてを削除することができます*あなたの助言ありがとう!子タグ/要素を削除する

+0

簡略化されたレイアウトを提供できますか?たとえば、これは単一の大きなファイルですか、これはXMLベースのドキュメントストアにある小さなXMLドキュメントの集合ですか?それはここで、助け構造であれば –

+0

こんにちは、その一つだけ大きなxmlファイル(225メガバイト).. \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"); 
    } 

} 
関連する問題