gpt4 book ai didi

JAVA - 如何使用 StAX 基于子节点从 xml 中删除父节点

转载 作者:行者123 更新时间:2023-11-30 06:48:03 24 4
gpt4 key购买 nike

我在 Java 中处理 xml 消息,我需要根据子节点的属性从子节点中删除父节点。

<xml>
<A>
<B>
<C>
<E>11</E>
<F>12</F>
</C>
</B>
<B>
<C>
<E>13</E>
<F>14</F>
</C>
</B>
</A>

例如,如果E=13,如何删除整个B节点。对于某些内存中方法(例如 DOM)来说,这将是一项微不足道的任务,但由于性能问题,我需要使用 StAX 来解析 xml 消息的上下。我如何使用 StAX 来完成此任务?提前非常感谢您。

最佳答案

下面是当C/E为13时删除B节点的代码。它是在vtd-xml和xpath中完成的。就性能而言,VTD-XML 比 DOM 好得多。这段代码将轻松处理你巨大的 xml 文件。如果您想了解更多信息,请阅读这篇学术论文。

http://sdiwc.net/digital-library/request.php?article=0d947fb50e2f0160a75ac9f6bbf0818a

import com.ximpleware.*;
public class removeParent {
public static void main(String[] s) throws VTDException,java.io.IOException{
VTDGen vg = new VTDGen();
if (vg.parseFile("d:\\xml\\remove.xml",false)){
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
XMLModifier xm = new XMLModifier(vn);
ap.selectXPath("/xml/A/B[C/E='13']");
int i=0;
while((i=ap.evalXPath())!=-1){
xm.remove();
//System.out.println("ok");
}
xm.output("d:\\xml\\updated.xml");
}
}
}

关于JAVA - 如何使用 StAX 基于子节点从 xml 中删除父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43331834/

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