Xmocument中的Xmldocument等价物

时间:2011-12-01 08:20:49

标签: xml xpath c#-3.0 xmldocument linq-to-xml

我使用XMLDocument

编写了以下代码
string Query = @"/ShortcutList/" + Modality;
            XmlNodeList nodes = shortcutsXMLDocument.SelectNodes(Query);
            if (nodes == null)
            {
                // if the modality not exists, I will load the Default one 

                Query = @"/ShortcutList/Default";
                nodes = shortcutsXMLDocument.SelectNodes(Query);
            }

            for (int i = 0; i < nodes[0].ChildNodes.Count; i++)
            {
// do something here
}

其中shortcutsXMLDocument是XMLDocument

如何使用xDocument转换它,我在xdocument中找不到与SelectNodes等效的文件

任何想法,请

1 个答案:

答案 0 :(得分:1)

代码很奇怪,因为SelectNodes总是返回一个XmlNodeList,所以检查if (nodes == null)永远不会成立,你也可以删除它。 至于前两行,您可以用

替换它们
List<XElement> nodes = shortcutsXMLDocument.Elements("ShortcutList").Elements(Modality).ToList();

假设Modality变量只包含元素名称而不是完整的XPath表达式。

然后对于for循环,您可以使用例如。

foreach (XNode node in nodes[0].Nodes()) {
  // do something here with node
}

但我怀疑如果您通过发布XML样本以及要提取哪些数据的一些解释告诉我们您想要实现的目标,我们可以编写更清晰,更简单的代码。