1

当我尝试这样编码时,

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 文件。

4

1 回答 1

1

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

于 2010-12-08T09:31:00.133 回答