选择SingleNode,了解如何使用字符串变量编写xpath查询

本文关键字:变量 xpath 查询 字符串 何使用 SingleNode 了解 选择 | 更新日期: 2023-09-27 17:57:31

Hi我有一个使用不同命名空间的xml文件(实际上是msbuild文件)

<?xml version="1.0" ?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup Condition="'$(key)'=='1111'">
          <Key1>Value1</Key1>
          <Key3>Value3</Key3>
    </PropertyGroup>
    <PropertyGroup Condition="'$(key)'=='2222'">
          <Key2>Value2</Key2>
          <Key4>Value4</Key4>
    </PropertyGroup>
</Project>

我正在努力获得"Key"的价值。但问题是,子节点(键)是在c#代码中动态决定的。所以我不能仅仅将childname附加到xpath查询中。但我有一个字符串变量,它的名称是子节点

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);
string child_node_name = get_name();
XmlNode child = platform_node.SelectSingleNode(???);

那么,在获得正确的属性组之后,我应该如何编写xpath查询,以便获得正确的值??

选择SingleNode,了解如何使用字符串变量编写xpath查询

如果您正在寻找子节点,"*"可能会起作用。或者简单地通过XmlNode.ChildNodes获取所有子节点并获取ValueInnerText