我想以編程方式使用ant腳本刪除一塊XML。我發現了精彩的xmltask任務,但對於我的生活,我無法找到我想要刪除的resource-ref
節點。在Ant腳本中查找資源引用XML標記
這是我的XML文檔的一個子部分。這是從web.xml
文件使用標準的DTD:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_ID"
version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Foo</display-name>
<resource-ref>
<description>Something Clever</description>
<res-ref-name>jdbc/foo1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>Reports Database</description>
<res-ref-name>jdbc/foo2</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
我試圖刪除第二個resource-ref
塊這樣的:
<project name="test" basedir="." default="fixxml">
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<target name="fixxml" description="er doy">
<xmltask source="web.xml" dest="output.xml">
<remove path="/web-app/resource-ref/description[text()='Reports Database']" />
</xmltask>
</target>
</project>
但是,這是行不通的。我也試過以下remove
報表:
<remove path="/web-app/resource-ref[2]" />
....
<remove path="//description[text()[normalize-space(.)='Reports Database']]"" />
他們都沒有工作。有沒有人看到我可能做錯了我的查詢?
檢查http://stackoverflow.com/questions/10096332/replacing-an-entire-xml-tag-using-ant – Maverick
謝謝你的建議,但這些選項也沒有爲我工作。 –