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

jpc*_*ara 5 java xml xpath dom vtd-xml

我已经开始在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>");
}
Run Code Online (Sandbox Code Playgroud)

我假设这是一个实时更新,将反映在VTDNav中.它看起来像我的理解是不正确的,因为只需插入元素含量无助于净资产值(如果我输出的VTDNav,它仍包含我的原始XML).我似乎能够处理新xml的唯一方法是从XMLModifier输出它.

modifier.outputAndReparse(); // Gives me a new VTDNav with the new content
Run Code Online (Sandbox Code Playgroud)

这里有什么我想念的吗?有更简单的方法吗?我希望能够插入新内容,然后立即获取新索引.我现有的代码(使用标准DOM类)有大量的插入和更新,我还需要知道文档中最后插入的元素的位置.不必outputAndReparse()每次然后找到插入的元素(我可能甚至无法保证)似乎并不像一个合理的解决方案.

小智 0

modifier.remove():
Run Code Online (Sandbox Code Playgroud)

在文本文件中存储 no.of xpaths, val 因此对于每个 xpath 生成一个新的输出 xxx.xml 文件。当您使用 xml 修饰符以前的数据和当前数据时,它将写入 xxx.xml 文件,以便消除以前的数据,并且仅针对当前的 xpath 数据更改写入新的 xxx.xml 文件,因此使用修饰符.remove( );

xm2.output( new FileOutputStream("/home/cupola-hadoop-project/TotalEnvironment/document/link/"+j+"101new.xml"));
xm2.remove();
Run Code Online (Sandbox Code Playgroud)

并将循环旋转所需的次数。