【问题标题】:SelectSingleNode, how to write xpath query using string variable?SelectSingleNode,如何使用字符串变量编写 xpath 查询?
【发布时间】:2013-01-19 20:42:35
【问题描述】:

您好,我有使用不同命名空间的 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 查询才能得到正确的值呢??

【问题讨论】:

标签: c# xml xmldocument msxml selectsinglenode


【解决方案1】:

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

【讨论】:

  • 但是可以有很多子节点。而且我只寻找一个子节点。字符串变量,child_node_name 将具有该信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多