Ant XMLTask无法将新的xml节点插入现有的XML文件中

时间:2011-12-30 07:46:54

标签: xml xpath ant

我只想尝试从现有文件中复制一个节点并将其粘贴到另一个文件中。没有什么花哨。我也有一些代码插入节点,看看我是否可以做到这一点,但我失败了相当光荣:)任何帮助将不胜感激

基本XML文件:(input.xml)

<?xml version="1.0" encoding="UTF-8"?>
<foo>
    <bar>
        <tests>
            <test id="1"/>
            <test id="2"/>
        </tests>
    </bar>
</foo>

蚂蚁目标我正在跑步:

<target name="copy">
    <xmltask source="input.xml" dest="1.xml">
        <copy path="/foo/bar/tests/test[@id='1']" buffer="storedXml" />
    </xmltask>
</target>

<target name="paste-xml" depends="define-tasks,copy">
    <xmltask source="input.xml" dest="output.xml">
        <insert path="/foo/bar/tests/test[last()]" file="output.xml" buffer="storedXml"/>
    </xmltask>
</target>

<target name="insert-xml" depends="define-tasks">
    <xmltask source="input.xml" dest="output.xml">
        <insert path="/foo/bar/tests/test[last()]" file="output.xml">
            <![CDATA[
            <test id="3"/>
            ]]>
        </insert>
    </xmltask>
</target>

<target name="write-config" depends="define-tasks">
    <delete file="output.xml" failonerror="false"/>
    <echoxml file="output.xml">
        <foo>
            <bar>
                <tests/>
            </bar>
        </foo>
    </echoxml>
</target>

1 个答案:

答案 0 :(得分:3)

我弄清楚问题是什么。问题是我在xmltask中设置输出文件,在insert节点中设置file属性。 insert节点中的file属性是指您希​​望将整个xml文件插入xmltask的destination属性。

未经测试的代码,但现在应该可以使用这样的代码:

<target name="paste-xml" depends="define-tasks,copy">
    <xmltask source="input.xml" dest="output.xml">
        <insert path="/foo/bar/tests/test[last()]" buffer="storedXml"/>
    </xmltask>
</target>

<target name="insert-xml" depends="define-tasks">
    <xmltask source="input.xml" dest="output.xml">
        <insert path="/foo/bar/tests/test[last()]">
            <![CDATA[
            <test id="3"/>
            ]]>
        </insert>
    </xmltask>
</target>