Сценарий:Обработка повторяющихся узлов в XML
Я разбор значения из файла 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>
Я думаю, что вам нужно разместить пример типа XML вы имеете в виду. Ответ, вероятно, «просто используйте SelectNodes», но отправьте пример, и мы сможем это точно определить. –
Это очень простой XML, я опубликую его фрагмент. – JYelton