Java 中的 VTD-XML - 在 XMLModifier.insertAfterElement 之后查找索引

2024-01-02

我已经开始在 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() 然后找到插入的元素(我什至无法保证)似乎不是一个合理的解决方案。


我认为答案是仔细计划您的修改以及随后对新内容的访问。如果您插入新内容,并尝试随后立即访问新内容,则 insertAndParse() 是最佳选择。但正如您所看到的,由于重新解析,速度相当慢。我的建议是,你计划尽可能多的一次性插入,然后只调用一次重新解析,这样会更有效率。

其精神是,VTD-XML 并不试图成为 DOM,它有自己的优点和缺点......这是弱点之一,但你可以解决它...... 当你尝试合并多个 xml 文件时,vtd-xml 肯定会大放异彩......

另外,如果你用 vtd-xml 标记这个问题,我将能够更容易地找到它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的 VTD-XML - 在 XMLModifier.insertAfterElement 之后查找索引 的相关文章

随机推荐