vtd-xml получить / удалить имя и значение атрибута

У меня есть следующий сегмент XML, из которого я хотел бы удалить атрибуты и вывести их как новый XML с использованием Ximpleware/VTD-XML. Источник:

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

Цель:

<top_level>
  <Item>
    <other_data>

Я понимаю, что могу использовать removeAttribute(int attrNameIndex) для этого, однако я изо всех сил пытаюсь найти подходящий метод для получения attrNameIndex.

1 ответ

Решение

Вот небольшой фрагмент кода со встроенным 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());    
    }
}
Другие вопросы по тегам