java vtd-xml_关于Java中的VTD-XML:Java中的VTD-XML-在XMLModifier.insertAfterElement之后查找索引...

本文探讨了在Java中使用VTD-XML进行XML解析的优势与局限性,特别是关于XML数据的实时更新与索引问题。作者分享了如何有效结合VTD-XML与DOM来提高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("content");

}

我以为这是实时更新,将反映在VTDNav中。看来我的理解是错误的,因为仅插入元素内容对导航没有任何作用(如果我输出VTDNav,它仍然包含我的原始xml)。我似乎可以获取新xml句柄的唯一方法是从XMLModifier输出它。

modifier.outputAndReparse(); // Gives me a new VTDNav with the new content

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

似乎没有一个很好的解决方案,我可以在任何地方找到。 由于我的代码涉及创建新文档,因此我采用了一种混合方法-使用vtd对输入文档进行读取,并使用DOM对输出文档进行写入。

+1,我还决定使用VTD来阅读和浏览文档,但是使用DOM对其进行修改。

我认为答案是仔细计划修改和随后对新内容的访问。如果插入新内容,然后尝试立即访问新内容,则可以使用insertAndParse()。但是正如您所看到的,由于重新解析,它的速度相当慢。我的建议是您计划一次全部插入,然后一次调用一次重新解析,这样一来,效率会大大提高。

精神是VTD-XML并不是要成为DOM,它有自己的优点和缺点...这是缺点之一,但是您可以解决它...

当您尝试合并多个xml文件时,vtd-xml肯定会发光。

另外,如果您使用vtd-xml标记此问题,我将能够更加轻松地找到它。

modifier.remove():

在文本文件中存储的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();

并将循环旋转所需的时间。

对不起,我不明白这个答案。 同样,阅读XMLModifier.remove()描述会产生"从主XML文档中删除内容"。 我需要完整的文档以及可导航的新内容-也许我当时并不清楚。 感谢您的输入!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值