gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:58:41 25 4
gpt4 key购买 nike

我已经开始在 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>");
}

我原以为这是一个实时更新,将反射(reflect)在 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 标记这个问题,我将能够更容易地找到它。

关于java - Java 中的 VTD-XML - 在 XMLModifier.insertAfterElement 之后查找索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6845759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com