如何从XPathNodeIterator获取元素值?

时间:2010-12-08 09:26:45

标签: c# xml c#-2.0 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时不知道如何建立获取元素值的关系?

实际上,我需要借助XPathNodeIterator读取整个Xml文件。

1 个答案:

答案 0 :(得分:1)

您必须为每个子节点启动一个新的迭代器,仅选择子项。 XPathNodeIterator XPath 通常更适合从xml中提取数据。如果您想阅读整个XML文件,您应该考虑XmlReader(非常快,仅向前)或XDocument(易于使用)。

相关问题