如何在C#中跳过XMLDocument中的节点

时间:2013-10-12 21:53:48

标签: c# xml xmldocument

假设我有一个像这样的XML文档

<xml>
     <food>
            <banana>this is a banana</banana>
            <apple>this is an apple</apple>
            <grape>this is a grape</grape>
     </food>
     <food>
            <cake>this is cake</cake>
            <soda>this is soda</soda>
            <cookie>this is a cookie</cookie>
     </food>
</xml>

如何使用C#中的XMLDocument跳转到<food>的第二个节点以获取食物?任何建议表示赞赏!

2 个答案:

答案 0 :(得分:1)

XmlDocument xdcDocument = new XmlDocument();

xdcDocument.LoadXml(<xml string>);

XmlElement xelRoot = xdcDocument.DocumentElement;
XmlNodeList xnlNodes = xelRoot.SelectNodes("/food");

bool first = true;
foreach(XmlNode xndNode in xnlNodes)
{
    if (first) {
        first = false;
        continue;
    }
    // process the second node here
}

答案 1 :(得分:0)

您可以使用Enumerable.Skip(来自@JeroenvanLangen的想法),但这需要一些技巧:

XmlNodeList xnlNodes = Doc.SelectNodes("/food");
foreach(XmlNode node in xnlNodes.Cast<XmlNode>().Skip(1))
{
    //do sth
}

因为XmlNodeList实现了接口IEnumerable而不是IEnumerable<XmlNode>,所以需要强制转换。