这是我当前的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代码,用它的SunElement标签追加一个新的RootElement标签 这是我的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>
答案 0 :(得分:0)
考虑将多个RootElement附加到单个字符串,然后将该字符串作为单个单元插入现有XML中。如果使用insertBeforeElement,那么toElement(VTDNav.PrevSibling)会将光标移回...请记住,XMLModifier不会立即遵循文档更改,因此底层的vtd和索引完全反映了原始文档的内容和结构。