我正在尝试使用Web Deploy 3.0在部署之前对我的web.config进行更改。假设我有以下xml:
<node>
<subnode>
<connectInfo httpURL="http://LookImAUrl.com" />
</subnode>
<node>
我想只匹配“http:// ...”中的“http”,以便我可以用https替换它。
我查看了XPath字符串函数并理解它们 - 我只是不知道如何将它们放在表达式的中间,例如:
"//node/subnode/connectInfo/@httpURL/substring-before(../@httpURL,':')"
这基本上就是我想要做的,但看起来不对。
答案 0 :(得分:1)
"//node/subnode/connectInfo/@httpURL/substring-before(../@httpURL,':')"
这基本上就是我想要做的,但看起来不对。
但它是正确的,将匹配http。
(顺便说一下,没有..你可以写得更短。
//node/subnode/connectInfo/@httpURL/substring-before(.,':')
)
但是,它将返回字符串“http”,而不是某种指向@httpUrl值的指针,这是不可能的,因为值中没有部分节点。
(在XPath 2中),你可以返回属性和一个新值,然后可能用调用语言改变它
//node/subnode/connectInfo/@httpURL/(., concat("https:", substring-after(.,':')))
答案 1 :(得分:1)
使用XPath 1.0,如果要返回URL的初始部分,请使用:
substring-before(//node/subnode/connectInfo/@httpURL,':')
请注意,这将仅返回第一个connectInfo
元素的值。
如果要获取使用HTTP的connectInfo
节点:
//node/subnode/connectInfo[starts-with(@httpURL,'http:')]
如果您希望获得使用HTTP的所有httpURL
:
//node/subnode/connectInfo/@httpURL[starts-with(.,'http:')]