我想在 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() 然后添加标签。但是,我不知道如何将属性复制到新标签。
谢谢
巴拉
编辑
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>
以上是代码。
最佳答案
我无法重现该问题...下面我在示例中使用了 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 吗?
关于java - 使用VTD-XML仅修改元素文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2773722/