Java vtd xml获取/删除属性名称和值

Java vtd xml获取/删除属性名称和值,java,xml,vtd-xml,Java,Xml,Vtd Xml,我有下面一段XML,我想从中剥离属性,并使用Ximpleware/VTD-XML作为新的XML输出。 资料来源: 目标: <top_level> <Item> <other_data> 我知道我可以使用removeAttribute(int attrNameIndex)来实现这一点,但是我正在努力找到获取attrNameIndex的适当方法。这里是一个嵌入xml文档的小代码片段。。它显示了如何删除一个属性或所有属性 import com.

我有下面一段XML,我想从中剥离属性,并使用Ximpleware/VTD-XML作为新的XML输出。 资料来源:


目标:

<top_level>
  <Item>
    <other_data>


我知道我可以使用removeAttribute(int attrNameIndex)来实现这一点,但是我正在努力找到获取attrNameIndex的适当方法。

这里是一个嵌入xml文档的小代码片段。。它显示了如何删除一个属性或所有属性

import com.ximpleware.*;
import java.io.*;

public class removeAttrNode {
    public static void main(String[] s) throws VTDException, Exception{
        VTDGen vg = new VTDGen(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
        String xml = "<Payment attr1=' some val' attr2='some other val'><Store><![CDATA[abc]]></Store></Payment>";
        vg.setDoc(xml.getBytes());
        vg.parse(false); // turn off namespace awareness so that 
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        XMLModifier xm = new XMLModifier(vn);
        ap.selectXPath("/Payment/@*");// select all attr node of Payment element
        int i=0;
        while((i=ap.evalXPath())!=-1){
            System.out.println("attr name "+vn.toString(i)+ " attr val ==>"+ vn.toString(i+1));
            xm.removeAttribute(i);
        }
        xm.output(baos);
        System.out.println(baos.toString());    
    }
}
导入com.ximpleware.*;
导入java.io.*;
公共类removeAttrNode{
公共静态void main(字符串[]s)引发VTDException,异常{
VTDGen vg=new VTDGen();ByteArrayOutputStream baos=new ByteArrayOutputStream();
字符串xml=”“;
setDoc(xml.getBytes());
parse(false);//关闭名称空间感知,以便
VTDNav vn=vg.getNav();
自动驾驶仪ap=新自动驾驶仪(vn);
XMLModifier xm=新的XMLModifier(vn);
ap.selectXPath(“/Payment/@*”);//选择Payment元素的所有属性节点
int i=0;
而((i=ap.evalXPath())!=-1){
System.out.println(“attr name”+vn.toString(i)+“attr val==>”+vn.toString(i+1));
xm.删除属性(i);
}
xm.输出(baos);
System.out.println(baos.toString());
}
}

顶层?这是打字错误吗?对不起!心不在焉地在我试图修改的字段周围添加了一些虚构的结构,而没有考虑语法。这是一段独立的代码-谢谢!将计算出我需要在当前代码中使用哪些位。
import com.ximpleware.*;
import java.io.*;

public class removeAttrNode {
    public static void main(String[] s) throws VTDException, Exception{
        VTDGen vg = new VTDGen(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
        String xml = "<Payment attr1=' some val' attr2='some other val'><Store><![CDATA[abc]]></Store></Payment>";
        vg.setDoc(xml.getBytes());
        vg.parse(false); // turn off namespace awareness so that 
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        XMLModifier xm = new XMLModifier(vn);
        ap.selectXPath("/Payment/@*");// select all attr node of Payment element
        int i=0;
        while((i=ap.evalXPath())!=-1){
            System.out.println("attr name "+vn.toString(i)+ " attr val ==>"+ vn.toString(i+1));
            xm.removeAttribute(i);
        }
        xm.output(baos);
        System.out.println(baos.toString());    
    }
}