请问xmlns属性不被忽略是一个错误还是设计上的考虑?
(cake版本0.33.0)
有一个类似于以下的Xml文件(一个过于简化的nuget规范文件):
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Continuously updated elements -->
<version>3.0.0</version>
</metadata>
</package>
我进行了一个天真的调用:
var x = XmlPeek( "my.nuspec", "/package/metadata/version/text()" );
结果得到了 x==null
。
因此,我这样指定命名空间:
var settings = new XmlPeekSettings{
Namespaces = new Dictionary<string, string> {{
"ps", "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
}}
};
var x = XmlPeek( "my.nuspec", "/ps:package/ps:metadata/ps:version/text()", settings);
并获得预期的结果x == 3.0.0
。