Сценарий:
Я анализирую значения из файла XML с использованием C # и использую следующий метод:
private static string GetXMLNodeValue(XmlNode basenode, string strNodePath)
{
if (basenode.SelectSingleNode(strNodePath) != null)
return (basenode.SelectSingleNode(strNodePath).InnerText);
else
return String.Empty;
}
Чтобы получить конкретное значение из файла XML, я обычно передаю корневой узел и путь, например "parentnode / item"
Недавно я столкнулся с проблемой, когда два узла на одном и том же уровне документа имеют одинаковое имя.
Почему:
Все дублирующие узлы должны быть прочитаны и использованы; у них есть дочерние узлы с разными значениями (которые могут их различать). В настоящее время у меня есть только два узла, каждый с именем и подузлы с именем , которые содержат уникальные имена. Другие подузлы содержат различные значения, такие как использование памяти. При обработке и сохранении значений для подузлов я бы по существу игнорировал имя родительского узла и использовал свои собственные имена на основе значения подузла .
Вопрос:
Каков наилучший способ получить значения для узлов с одинаковыми именами? Моя мысль состояла в том, чтобы загрузить все значения, соответствующие имени узла, в массив, а затем использовать индекс массива для обращения к ним. Я не уверен, как реализовать это, хотя. (Я не очень разбираюсь в навигации по XML.)
Пример XML
<?xml version="1.0" ?>
<info>
<processes>
<process>
<name>program1</name>
<memory_use>24.8</memory_use>
</process>
<process>
<name>program2</name>
<memory_use>19.0</memory_use>
</process>
</processes>
</info>