我想在vtd-xml xml修饰符类中实现以下功能。
Original xml
<xml>
<element attr1='1' attr2='2' attr3='3'>text</element>
</xml>
int p = vn.getText()
xm.updateToken(p, "new text");
但是这里的代码是将文本修改为新文本,但它并没有复制所有属性。知道怎么做到这一点?
其他选项是调用xm.remove()然后添加标记。但是,我不知道如何将属性复制到新标签。
谢谢你 巴拉
Edit
testAP.selectXPath("pn[@category]");
while((j = testAP.evalXPath()) != -1)
{
int p = vn.getText();
xm.updateToken(p, "new text");
}
XML
<pn category = "ONE" GENERAL0 = "0" GENERAL1 = "-1" >previoustext</pn>
以上是代码。
答案 0 :(得分:1)
我无法重现问题...下面我在你的例子中使用了xml文本,我得到的输出是:
<pn category="ONE" GENERAL0="0" GENERAL1="-1" >new text</pn>
以下是我使用的测试代码
String s = "<pn category=\"ONE\" GENERAL0=\"0\" GENERAL1=\"-1\" >previoustext</pn>";
vg.setDoc(s.getBytes());
vg.parse(true);
vn = vg.getNav();
AutoPilot testAP = new AutoPilot(vn);
testAP.selectXPath("/pn[@category]");
xm.bind(vn);
int j;
while((j = testAP.evalXPath()) != -1)
{
int p = vn.getText();
xm.updateToken(p, "new text");
}
XMLByteOutputStream xbos =new XMLByteOutputStream(xm.getUpdatedDocumentSize());
xm.output(xbos);
System.out.println(new String(xbos.getXML()));
您使用的是最新版本的vtd-xml吗?