2013-06-27 75 views
1

在MSDEPLOY.EXE部署期間,我試圖將參數噴射到XML配置文件中,但配置值存儲在CDATA元素中。以下是文件的內容,稱爲paths.xml:Web部署設置嵌入在CDATA元素中的XML配置文件的參數化

<?xml version="1.0" encoding="UTF-8"?> 
<course> 
    <questionnaires><![CDATA[https://www.site.com/somepage.asp]]></questionnaires>  
</course> 

我需要的是URL轉換成不同的東西,但我不能找出正確的XPath和語法我的parameters.xml文件,在這裏是什麼我必須得:

<?xml version="1.0" encoding="utf-8"?> 
<parameters> 
    <parameter name="QuestPath" description="Questionnaires path" defaultValue="&lt;questionnaires&gt;&lt;![CDATA[https://www.foo.com/somepage.asp]]&gt;&lt;/questionnaires&gt;" tags=""> 
    <parameterEntry kind="XmlFile" scope="paths.xml$" match="/course/questionnaires" /> 
    </parameter> 
</parameters> 

我只有很少的運氣引用CDATA元素來取代它,所以你可以看到我現在試圖取代包括它的CDATA內容整個調查問卷的元素。我不得不做一些轉義嵌入的尖括號,所以parameters.xml沒有被拒絕,因爲XML格式無效。

現在,得到的paths.xml結束,如:

<?xml version="1.0" encoding="UTF-8"?> 
<course> 
    <questionnaires>https://www.foo.com/somepage.asp</questionnaires> 
</course> 

所以,事情已經解決了CDATA元素降到只有它的內容,CDATA不再出現在paths.xml我以爲會引起讀取它失敗的程序。幫幫我!

+0

也許這將幫助? http://stackoverflow.com/a/570538/1394393 – jpmc26

+0

謝謝 - 是的,我發現一個,並能夠製作XPath檢索CDATA,但取代它的成功率較低。我想到最簡單的解決方法可能是完全忽略XML,並將其視爲參數kind =「TextFile」,然後使用正則表達式替換,這在過去對我來說效果很好。 – Michael12345

回答

2

好吧 - 我找到了一個更簡單的解決方案。結合開發人員將我們的配置XML文件放在我們的服務器上,我們對其進行了更改,以便元素只包含原始URL,完全無需CDATA結構。

測試了消費應用還出現了正常工作後,我們同意了他們不需要,所以我能不喜歡引用的節點上正常XMLFILE替代:

...match="/course/questionnaires/text()" 
+0

謝謝!我在過去的3個小時裏遇到了類似的問題! – ShaneC

相關問題