Как я могу получить значение элемента из XPathNodeIterator?
Когда я пытаюсь кодировать как это,
XPathNodeIterator it;
string selectStr = "Equipment/Group/item";
it = nav.Select(selectStr);
while (it.MoveNext())
{
String strVal = "";
if (it.Current.HasChildren)
{
strVal = it.Current.Value.ToString(); // get wrong value here. I want to get 'COM' and 'MD'
}
}
Мой XML-файл как этот
<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<License licenseId="" licensePath=""/>
<Group>
<item>
<key>COM</key>
<value>
<format>10</format>
<value>0</value>
</value>
</item>
<item>
<key>MD</key>
<value>
<format>20</format>
<value>test</value>
</value>
</item>
.....
Я нашел, когда я использую while
Способ зациклить все XML-файл очень удобен.
Но я не знаю, как установить отношение для получения значения элемента, когда я определил XPathNodeIterator, как указано выше?
На самом деле мне нужно прочитать весь XML-файл с помощью XPathNodeIterator.
1 ответ
Решение
Вам нужно будет запустить новый итератор для каждого подузла, выбирая только подэлементы. XPathNodeIterator
и XPath в целом больше ориентирован на извлечение данных из XML. Если вы хотите прочитать весь XML-файл, вы должны рассмотреть XmlReader (очень быстрый, только вперед) или XDocument (простой в использовании).