2011-12-30 88 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

相關問題