在MSDEPLOY.EXE部署期间,我尝试将参数喷射到XML配置文件中,但配置值存储在CDATA元素中。以下是文件的内容,名为paths.xml:
<?xml version="1.0" encoding="UTF-8"?>
<course>
<questionnaires><![CDATA[https://www.site.com/somepage.asp]]></questionnaires>
</course>
我需要将该URL转换为不同的URL,但我无法找到我的parameters.xml文件的正确XPATH和语法,这是我现在所拥有的:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<parameter name="QuestPath" description="Questionnaires path" defaultValue="<questionnaires><![CDATA[https://www.foo.com/somepage.asp]]></questionnaires>" tags="">
<parameterEntry kind="XmlFile" scope="paths.xml$" match="/course/questionnaires" />
</parameter>
</parameters>
我很少运气引用CDATA元素来取代它,所以你可以看到我现在正在尝试替换整个问卷元素,包括其CDATA内容。我不得不对嵌入的尖括号进行一些转义,因此由于XML格式无效而没有拒绝parameters.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 :(得分:2)
好的 - 我找到了一个更简单的解决方案。与在我们的服务器上包含此配置XML文件的开发人员一起,我们更改了它,因此元素只包含原始URL,完全取消了CDATA结构。
在测试消费应用程序似乎仍然正常工作后,我们同意他们不需要,因此我能够在引用的节点上进行正常的XmlFile替换:
...match="/course/questionnaires/text()"