使用 vtd-xml 更新属性值

Update attribute value using vtd-xml

给定属性的 xpath 和新值,我希望将属性值更新为新值。

我按照这里的例子:http://vtd-xml.sourceforge.net/codeSample/cs7.html 得出以下结论:

autoPilot.selectXPath(xpath);
modifier.updateToken(vtdNav.getAttrVal(vtdNav.toString(autoPilot.evalXPath())), newContent);

...我的测试都通过了,但也许是因为我不习惯 vtd-xml 的 "tokenized" 工作方式,它 "feel" 不对,所以我只是想确认我做了正确的事情。

您的代码可以正常工作...假设您将调用 modifier.output()。

但这不是最优的...

此声明

modifier.updateToken(vtdNav.getAttrVal(vtdNav.toString(autoPilot.evalXPath())), newContent);

可以写成

modifier.updateToken(autoPilot.evalXPath()+1, newContent);

因为如果属性名称的索引值为 i (!=-1),则属性值始终为 i+1... 因为 attr val 紧跟在 attr 名称之后。不需要条件检查。