如何在 java 中使用 vtd-xml 将新元素附加到现有 xml
How do I append new element to existing xml using vtd-xml in java
这是我当前的 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 和索引完全反映了内容和结构原始文件。
这是我当前的 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 和索引完全反映了内容和结构原始文件。