Как я могу получить значение элемента из XPathNodeIterator? - PullRequest
1 голос
/ 08 декабря 2010

Когда я пытаюсь кодировать как это,

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 Ответ

1 голос
/ 08 декабря 2010

Вам потребуется запустить новый итератор для каждого подузла, выбирая только подэлементы.XPathNodeIterator и XPath в целом больше ориентированы на извлечение данных из xml.Если вы хотите прочитать весь XML-файл, вам следует рассмотреть XmlReader (очень быстро, только вперед) или XDocument (легко использовать).

...