TransformXml由于命名空间而找不到节点
我有通过msbuild TransformXml转换的自定义配置文件。 顶部节点具有xlmns属性我无法删除它。 以下是TestSettings.Debug.config的示例:TransformXml由于命名空间而找不到节点,xml,xpath,msbuild,config,Xml,Xpath,Msbuild,Config,我有通过msbuild TransformXml转换的自定义配置文件。 顶部节点具有xlmns属性我无法删除它。 以下是TestSettings.Debug.config的示例: <TestSettings xmlns="http://example.com" type="mytype, mydll" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <Config> <serv
<TestSettings xmlns="http://example.com" type="mytype, mydll"
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<Config>
<servers>
<main>
<add Name="PROD" Description="Production Server" URL="http://myserver.example.com"
DefaultPort="" Environment="Production" xdt:Transform="Insert" xdt:Locator="Match(Name)"/>
</main>
</servers>
<BusinessDayStart xdt:Transform="InsertBefore(//BusinessDayEnd)">PT7H0M</BusinessDayStart>
<Senders>
<Sender >
<Email xdt:Transform="InsertAfter(//Sender[1]/Signature)" >abc@example.com</Email>
</Sender>
</Senders>
</Config>
PT7H0M
abc@example.com
以下是源文件的示例:
<TestSettings xmlns="http://example.com" type="mytype, mydll">
<Config>
<servers>
<main>
</main>
</servers>
<BusinessDayEnd>PT7H0M</BusinessDayEnd>
<Senders>
<Sender>
<CompanyId>CompanyID</CompanyId>
<Signature> My Company Service </Signature>
</Sender>
</Senders>
</Config>
PT7H0M
公司ID
我的公司服务
TransformXml抛出“源文档中没有匹配的元素”
我更新了这两个文件,使其具有显式名称空间xmlns:kk=”http://example.com"
所有节点和XPath的前缀都是“kk:”,即
PT7H0M
我收到错误“需要命名空间管理器或XsltContext。此查询具有前缀、变量或用户定义函数”
我在2010年读到,有一个名称空间的bug得到了解决。
不管我怎么努力,都没有任何帮助
请帮助解决此问题。您可以使用
local-name()
函数跳过默认名称空间,例如
//*[local-name()='BusinessDayEnd']
及
您可以使用
local-name()
函数跳过默认名称空间,例如
//*[local-name()='BusinessDayEnd']
及
你可以试试
/*[local-name()='BusinessDayEnd']
是的,就是这样,非常感谢。我还为数组中的一个元素使用了XPath(//*[local-name()='Sender'][1])。@Joel,如果您提交答案,我会将其标记为Solved您可以尝试/*[local-name()='BusinessDayEnd']
是的,完成了,非常感谢。我还为数组中的一个元素使用了XPath(//*[local-name()='Sender'][1])。@乔尔,如果你提交答案,我会把它标记为已解决
//*[local-name()='Sender'][1]/*[local-name()='Signature']