gpt4 book ai didi

java - 如何使用 java 中的 vtd-xml 将新元素附加到现有 xml

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:03 25 4
gpt4 key购买 nike

这是我当前的 xml 文件,

<MainRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Root>
<RootElement name="rootelement1" date="21.Nov">
<SubElement id="32"/>
</RootElement>
<RootElement name="rootelement2" date="1.Dec">
<SubElement id="45"/>
</RootElement>
<RootElement name="rootelement3" date="18.Dec">
<SubElement id="12"/>
</RootElement>
</Root>

我需要一个带有 vtd-xml 解析的 java 代码来附加一个新的 RootElement 标签及其 SunElement 标签这是我的java代码

public static void main(String[] args) {
VTDGen vtdGenerator;
VTDNav vtdNavigator;
XMLModifier xmlModifier;
AutoPilot autoPilot;
vtdGenerator = new VTDGen();
if (vtdGenerator.parseFile("test.xml", false)) {
vtdNavigator = vtdGenerator.getNav();
autoPilot = new AutoPilot(vtdNavigator);
autoPilot.bind(vtdNavigator);
autoPilot.selectElement("RootElement");
xmlModifier = new XMLModifier();
while (autoPilot.iterate()) {
// code to insert new RootElement tag with its subElment tag and
// their atributes
}
}
xmlModifier.output(new FileOutputStream("test.xml"));
}

我可以使用它插入单个标签

xmlModifier.insertAfterElement("<RootElement name=\"rootelement4\" date=\"21.Dec\">\n\t\t<SubElement id=\"66\"/>\n</RootElement>");

但我想插入多个 RootElement 标签,这是此过程现在允许的。谁能帮助我将多个标签附加到 xml 中。还有其他方法吗?我不想使用 DOM 解析器,因为 DOM 不能保证属性的顺序。

我需要这样的输出,

<MainRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Root>
<RootElement name="rootelement1" date="21.Nov">
<SubElement id="32"/>
</RootElement>
<RootElement name="rootelement2" date="1.Dec">
<SubElement id="45"/>
</RootElement>
<RootElement name="rootelement3" date="18.Dec">
<SubElement id="12"/>
</RootElement>
<RootElement name="rootelement4" date="21.Dec">
<SubElement id="66"/>
</RootElement>
</Root>

最佳答案

考虑将多个 RootElement 附加到单个字符串,然后将该字符串作为单个单元插入到现有 XML 中。如果您使用 insertBeforeElement,则 toElement(VTDNav.PrevSibling) 会将光标移回...请记住,XMLModifier 不会立即支持文档更改,因此底层 vtd 和索引完全反射(reflect)原始文档的内容和结构。

关于java - 如何使用 java 中的 vtd-xml 将新元素附加到现有 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786619/

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