首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取web.sitemap

无法读取web.sitemap
EN

Stack Overflow用户
提问于 2015-02-23 12:15:29
回答 1查看 763关注 0票数 1

我一直在尝试使用LINQ阅读web.sitemap,但没能成功。以下是我的web.sitemap

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode url="" title="Root">
<siteMapNode url="" title="Manage">
  <siteMapNode url="~/Users.aspx" title="Users" name="10001"/>
  <siteMapNode url="~/Targets.aspx" title="Target" name="10002" />
  <siteMapNode url="~/Cases.aspx" title="Case" name="10003" />
  <siteMapNode url="~/GeoFence.aspx" title="Geofence" name= "10004" />
</siteMapNode>
<siteMapNode url="" title="Configure">
  <siteMapNode url="~/CellDirectory.aspx" title="Cell Directory" name="10005" />
  <siteMapNode url="~/WhiteList.aspx" title="White List"  name="10006"/>
  <siteMapNode url="" title="Options" />
</siteMapNode>
<siteMapNode url="" title="Locate">
  <siteMapNode url="~/FindNow.aspx" title="Find Now"  name="10007"/>
  <siteMapNode url="~/TrackNow.aspx" title="Track Now" name="10008" />
</siteMapNode>
<siteMapNode url="" title="Analyse">
  <siteMapNode url="~/Dashboard.aspx" title="Dashboard" name="10009" />
  <siteMapNode url="~/Search.aspx" title="History" name="10010" />
</siteMapNode>
</siteMapNode>
</siteMap>

以下是我的代码

代码语言:javascript
复制
XElement xelement2 = XElement.Load(Server.MapPath("~/web.sitemap"));
var urlDescList1 = xelement2.Descendants()                                   
    .Where(sel => (string)sel.Attribute("name").Value == "10001")
    .SelectMany(sel => sel.Elements())
    .Select(nd => new
    {
        title = nd.Attribute("title").Value,
        url = nd.Attribute("url").Value
    }).FirstOrDefault();

它给了我null值。我需要读取具有名称属性值= 10001的节点

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-23 12:44:19

我认为您的查询只是略微偏离了。您需要确保元素具有name属性,并且没有必要使用SelectMany(sel => sel.Elements())

代码语言:javascript
复制
XElement xelement2 = XElement.Load(Server.MapPath("~/web.sitemap"));
var urlDescList1 =  
    xelement2.Descendants()                                   
        .Where(sel => sel.Attribute("name") != null && sel.Attribute("name").Value == "10001")=
        .Select(nd => new
        {
            title = nd.Attribute("title").Value,
            url = nd.Attribute("url").Value
        })
        .FirstOrDefault();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28673606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档