2011-12-30 128 views
2

我只是试图从现有文件复制一个节点并将其粘贴到另一个文件中。没有什么花哨。我也有一些代码插入节点,看看我是否能得到它这样做,但我失败了,而光荣:)任何帮助将不胜感激Ant XMLTask无法将新的xml节点插入到现有的XML文件中

基地XML文件:(input.xml中)

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

Ant目标我运行:

<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> 
+0

似乎有不被任何问题...请,提供seconf XML文档,为您要插入的” “来自第一个XML文档的节点。请指定第一个文档中的哪个节点必须插入到第二个文档中。请指定第二个文档中应插入节点的位置。 – 2011-12-30 13:37:09

+0

另外,这个问题与XPath有什么关系?将节点插入XML文档无法用XPath完成,XPath是XML文档的查询语言(仅),因此无法创建/修改xml文档。 – 2011-12-30 13:42:18

+0

ant的XMLTask使用Xpath表示法。如果您查看write-config目标,您可以看到正在创建的文件名为output.xml,其中包含xml。我试图插入节点是<测试ID = “3”/>我希望的输出是这个样子: <测试ID = “3”/> gdoubleod 2011-12-30 16:06:30

回答

3

我想通了什么问题了。问题是我在xmltask中设置输出文件,在插入节点中设置文件属性。插入节点中的文件属性是当您要将整个xml文件插入xmltask的目标属性时。

未测试的代码,但这样的事情应该现在的工作:

<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> 
+0

我试过了,但似乎output.xml是错误的 \t \t <?xml version =“1.0”encoding =“UTF-8”standalone =“no”?> \t \t \t \t \t \t \t \t \t \t \t \t \t \t <测试ID = “1”/> \t \t \t \t \t \t \t \t \t \t \t <测试ID = “3”/> \t \t \t \t \t \t \t \t \t \t \t \t \t \t 2015-05-12 02:51:36

+0

正确的语法是最有可能的:<插入路径=“/富/酒吧/ tests/test [last()]“position =”after“>(默认情况下在所选节点下的位置) – 2016-02-12 22:28:52

相关问题