SelectSingleNode, как написать запрос xpath, используя строковую переменную?

Привет, у меня есть файл 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>

И я пытаюсь получить значение «Ключ». Но проблема в том, что дочерний узел (ключ) определяется динамически в коде С#. Поэтому я не могу просто добавить дочернее имя к запросу 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, чтобы я мог получить правильное значение?


person in His Steps    schedule 05.02.2013    source источник
comment
И, пожалуйста, не задавайте один и тот же вопрос снова и снова.   -  person John Saunders    schedule 05.02.2013
comment
Это не дубликат и тот же вопрос. Я забыл изменить название.   -  person in His Steps    schedule 05.02.2013
comment
Когда вы собираетесь задавать вопросы, которые так похожи друг на друга, вам нужно четко указать, почему они разные.   -  person John Saunders    schedule 05.02.2013


Ответы (1)


Если вы ищете дочерние узлы, "*", скорее всего, подойдет. Или просто получите все дочерние узлы через XmlNode.ChildNodes и возьмите Value или InnerText.

person Alexei Levenkov    schedule 05.02.2013
comment
Но дочерних узлов может быть много. И я ищу только один дочерний узел. строковая переменная, child_node_name будет иметь эту информацию - person in His Steps; 05.02.2013