2016-07-03 5 views
3
<Address> 
    <value xsi:type="..." xmlns:ns3="..." xmlns:xsi="...."> 
     <item> 
      <Country>USA</Country> 
      <City>New York</City> 
      <Street>Sunrise Av.</Street> 
      <Number>164</Number> 
     </item> 
    </value> 
</Address> 
<University> 
    <value xsi:type="..." xmlns:ns3="..." xmlns:xsi="...."> 
     <item> 
      <Name>Cambridge</Name> 
      <Location>UK</Location> 
      <Department>IT</Department> 
     </item> 
    </value> 
</University> 
<Work> 
    <value xsi:type="..." xmlns:ns3="..." xmlns:xsi="...."> 
</Work> 

私は上記のXMLをJava Stringに格納しています。すべてのノードから<value>タグを削除します。どのように私はこれを行うことができますかどんな解決策がありますか?XML文書からノードを削除する

次のように私が望む結果は次のとおりです。

以下
<Address> 
    <item> 
     <Country>USA</Country> 
     <City>New York</City> 
     <Street>Sunrise Av.</Street> 
     <Number>164</Number> 
    </item> 
</Address> 
<University> 
    <item> 
     <Name>Cambridge</Name> 
     <Location>UK</Location> 
     <Department>IT</Department> 
    </item> 
</University> 
<Work> 
</Work> 
+0

である:1)DOMにそれを解析、要素を削除し、それを書き戻します。 2)要素をフィルタリングするXSLT変換を介して送信します。 – Andreas

+0

タグを削除しますか?タグを含むそのタグで囲まれたものをすべて削除しますか? –

+0

タグだけを削除します。タグで囲まれたものはすべて存在するはずです。たとえば、タグは削除しないでください。 –

答えて

0

は、私は二つの方法を考えることができたXPathに基づくスニペットとVTD-XML

import com.ximpleware.*; 
import java.io.*; 
public class removeTag { 
    public static void main(String[] args) throws VTDException,IOException { 
     // TODO Auto-generated method stub 
     VTDGen vg = new VTDGen(); 
     AutoPilot ap=new AutoPilot(); 
     ap.selectXPath("//value"); 
     XMLModifier xm = new XMLModifier(); 
     if (!vg.parseFile("d:\\xml\\tag.xml", false)){ 
      System.out.println("error in xml"); 
      return; 
     } 
     VTDNav vn = vg.getNav(); 
     xm.bind(vn); 
     ap.bind(vn); 
     int i=0; 
     while((i=ap.evalXPath())!=-1){ 
      xm.remove();//remove value fragment  
      long l = vn.getContentFragment(); //replace value with everything it encloses 
      xm.insertBeforeElement(vn.getXML().getBytes(), l); 
     } 
     xm.output("d:\\xml\\newTag.xml"); 
    } 
} 
関連する問題