我已经开始在 Java 中使用 VTD(我猜是 VTD-XML),对于 XPath 读取它非常好。我现在遇到的问题是插入数据。可以说我正在执行以下操作:
VTDNav nav = preExistingGen.getNav();
AutoPilot pilot = new AutoPilot(nav);
pilot.selectXPath("/Something/SomethingElse");
if (pilot.evalXPath() != -1) {
XMLModifier modifier = new XMLModifier(nav);
modifier.insertAfterElement("<some>content</some>");
}
我原本以为这是一个实时更新,它会反映在 VTDNav 中。看起来我的理解是不正确的,因为简单地插入元素内容对导航没有任何作用(如果我输出 VTDNav,它仍然包含我的原始 xml)。我似乎可以处理新 xml 的唯一方法是从 XMLModifier 输出它。
modifier.outputAndReparse(); // Gives me a new VTDNav with the new content
我在这里缺少什么吗?有没有更简单的方法来做到这一点?我希望能够插入新内容,然后立即获取新索引。我现有的代码(使用标准的 DOM 类)有大量的插入和更新,我还需要知道最后一个插入的元素在文档中的位置。每次都必须 outputAndReparse() 然后找到插入的元素(我什至无法保证)似乎不是一个合理的解决方案。