【问题标题】:vtd-xml get/remove attribute name and valuevtd-xml 获取/删除属性名称和值
【发布时间】:2017-12-12 13:08:55
【问题描述】:

我有以下 XML 片段,我想使用 Ximpleware/VTD-XML 从其中剥离属性并作为新 XML 输出。 来源:

<top_level>
  <Item id="1">
    <other_data>

目标:

<top_level>
  <Item>
    <other_data>

我知道我可以使用 removeAttribute(int attrNameIndex) 来执行此操作,但是我正在努力寻找合适的方法来获取 attrNameIndex。

【问题讨论】:

  • 顶级?这是错字吗?
  • 对不起!心不在焉地在我试图修改的领域周围添加了一些虚构的结构,而不考虑语法。

标签: java xml vtd-xml


【解决方案1】:

这是一个嵌入 xml 文档的小代码 sn-p。它向您展示了如何删除一个属性或所有属性..

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());    
    }
}

【讨论】:

  • 这是一段独立的代码——谢谢!将找出我需要在当前代码中使用哪些位。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多