您好,我有 xml 文件(实际上是 msbuild 文件),它使用不同的命名空间
<?xml version="1.0" ?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(key)'=='1111'">
<Key>Value</Key>
</PropertyGroup>
</Project>
但问题是我无法将 SelectSingleNode 与该文件一起使用,因为
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
我相信这是因为默认名称空间(该方法所必需的)由于上面的 xmlns 而消失了。然后我想我只需要为此添加必要的一个..但我的尝试根本不成功。您能给我一个简单的例子来说明如何做到这一点吗?
这是我的做法。 (我也尝试添加多个命名空间但没有成功..)
XmlDocument xml = new XmlDocument();
xml.Load("ref.props");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode platform_node
= xml.SelectSingleNode("//msbld:PropertyGroup[contains(@Condition, '1111')]", nsmgr);
您需要使用correct命名空间,其中is "http://schemas.microsoft.com/developer/msbuild/2003
".
Try
XmlDocument xml = new XmlDocument();
xml.Load("ref.props");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("ms", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode platform_node
= xml.SelectSingleNode("/ms:Project/ms:PropertyGroup[contains(@Condition, '1111')]",
nsmgr);
不要将命名空间前缀(在 XML 中为空)与命名空间混淆,命名空间是“http://schemas.microsoft.com/developer/msbuild/2003
".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)