Как я могу получить значение элемента из 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 (простой в использовании).

Другие вопросы по тегам