Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用vtd xml将新元素附加到现有xml中_Java_Xml_Vtd Xml - Fatal编程技术网

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

如何在java中使用vtd xml将新元素附加到现有xml中,java,xml,vtd-xml,Java,Xml,Vtd Xml,这是我当前的xml文件 <MainRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Root> <RootElement name="rootelement1" date="21.Nov"> <SubElement id="32"/> </RootElement> <RootElement name="roo

这是我当前的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>
我可以使用此选项插入单个标记

xmlModifier.insertAfterElement("<RootElement name=\"rootelement4\" date=\"21.Dec\">\n\t\t<SubElement id=\"66\"/>\n</RootElement>");
xmlModifier.insertAfterElement(“\n\t\t\n”);
但是我想插入多个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.previsibling)会将光标向后移动。。。请记住,XMLModifier不支持文档立即更改,因此底层vtd和索引完全反映原始文档的内容和结构。

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

您是否考虑过将多个根元素附加到单个字符串,然后将该字符串作为单个单元插入现有XML中?是,这可能是实现此目的的一种方法。谢谢@vtd-xml-author。如何在rootelement2节点旁边插入新的RootElement标记?如何来回迭代光标以指向确切位置?当您在rootelement2节点旁边插入新的RootElement标记时,您的光标可能位于rootelement2,可能不需要迭代光标,因为您已经位于它了。。。我没弄错你的问题吧?这是我用来插入新元素xmlModifier.insertBeforeElement(“插入新根元素”)的语句;我可以使用节点位置作为vtdNavigator.pointCursorTo(int-index)插入元素吗;然后执行插入操作xmlModifier.insertBeforeElement(“插入新根元素”);您是否考虑过将多个RootElement附加到单个字符串中,然后将该字符串作为单个单元插入到现有XML中?是的,这可能是实现此目的的一种方法。谢谢@vtd-XML-author。如何在rootelement2节点旁边插入新的RootElement标记?如何来回迭代光标以指向确切位置?当您在rootelement2节点旁边插入新的RootElement标记时,您的光标可能位于rootelement2,可能不需要迭代光标,因为您已经位于它了。。。我没弄错你的问题吧?这是我用来插入新元素xmlModifier.insertBeforeElement(“插入新根元素”)的语句;我可以使用节点位置作为vtdNavigator.pointCursorTo(int-index)插入元素吗;然后执行插入操作xmlModifier.insertBeforeElement(“插入新根元素”);
<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>