XDocument,XElement:Sequence不包含匹配元素

时间:2012-07-31 15:18:37

标签: c# asp.net xml linq-to-xml xelement

使用C#搜索xml文件的元素,但获取以下内容

错误:序列不包含匹配元素

    XNamespace siteNM = "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0";
            XDocument sitemap = new XDocument
                (new XDeclaration("1.0", "UTF-8", null), 
                     new XElement(siteNM + "siteMap", 
                          new XElement(siteNM + "siteMapNode", new XAttribute("title", "Home"), new XAttribute("url", "home.aspx"), new XAttribute("description", "Home"))
                                 ));
    XElement x = sitemap.Root;

我尝试使用两种方法搜索元素,但两者都给我相同的错误

第一路:

XElement child = x.Descendants("siteMapNode").Where(el => el.Attribute("title") != null && el.Attribute("title").Value == "Home").First();

第二路:

XElement child1 = x.Descendants("siteMapNode").First(el => (string)el.Attribute("title") == "Home");

请帮帮我。 非常感谢你..

2 个答案:

答案 0 :(得分:5)

缺少名称空间

XElement child = x.Descendants(siteNM + "siteMapNode")
                .First(el => el.Attribute("title") != null && el.Attribute("title").Value == "Home");

答案 1 :(得分:2)

你可能也应该在搜索查询中添加名称空间:

XElement child = x.Descendants(siteNM + "siteMapNode").Where(el => el.Attribute("title") != null && el.Attribute("title").Value == "Home").First();