从XML Document中删除节点

时间:2016-07-03 14:35:23

标签: java xml xml-parsing

base64EncodedMac

我将上述XML存储在Java String中。我想从所有节点中删除<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> 标记。你有什么方法可以解决这个问题吗?

我想要的结果如下:

<value>

1 个答案:

答案 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");
    }
}