Java   .Net   VC   软件工程
 武汉电脑网 >> 系统应用 >> 软件开发 >> .Net >> 正文 > 使用LINQ查询ASP.NET中的Sitemap

使用LINQ查询ASP.NET中的Sitemap


作者:佚名    文章来源:本站原创    点击数:    更新时间:2009-4-14      ★★★

今天没有什么事,在网上看到用LINQ to XML来操作Sitemap,自己感觉很有用,所有就写出来与大家一起分享,虽然很简单,但是我还是要写,可能对以后大家做项目有一点帮助;如是你是牛X的人,你可以不看,如果你是初学者,推荐你可以看看;

  1.首先我们要创建一个Web.Sitemap XML文件;代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
 <siteMapNode title="My Favorites">
  <siteMapNode title="Favorite Sites">
   <siteMapNode title="ASP.NET Home" url="http://www.asp.net" />
   <siteMapNode title="ASP.NET Articles" url="http://www.dotnetcurry.com"/>
   <siteMapNode title="Windows Client" url="http://www.windowsclient.net" />
   <siteMapNode title="Silverlight" url="http://silverlight.net" />
  </siteMapNode>
  <siteMapNode title="Favorite Blogs">
   <siteMapNode title="ScottGu Blog" url="http://weblogs.asp.net/scottgu"/>
   <siteMapNode title="Technology Blog" url="http://www.devcurry.com" />
   <siteMapNode title="SQL Blog" url="http://www.sqlservercurry.com" />
   <siteMapNode title="Food Lovers" url="http://foodatarian.com" />
  </siteMapNode>
  <siteMapNode title="Favorite Social Sites">
   <siteMapNode title="Twitter" url="http://twitter.com/"/>
   <siteMapNode title="FaceBook" url="http://www.facebook.com" />
   <siteMapNode title="LinkedIn" url="http://www.linkedin.com" />
   <siteMapNode title="Orkut" url="http://www.orkut.com" />
  </siteMapNode>
 </siteMapNode>
</siteMap>

2.第二步,我们为页面文件中添加一个控件,在这里我用的是bulletedList,并把它的显示方式设为Hyperlink,代码如下:

<head runat="server">
  <title></title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:BulletedList ID="linkList" DisplayMode="HyperLink" runat="server">
    </asp:BulletedList>
  </div>
  </form>
</body>
</html>

3.用LINQ to XML来读出XML文件中的所有的URL,代码如下所示:

#region 用LINQ显示出所有的URL
   public void ShowURL()
   {
     XElement xelement = XElement.Load(Server.MapPath("Web.sitemap"));
     var urllist = xelement.Descendants().Attributes().Where(x => x.Name == "url")

            .Select(x => x.Value);
     foreach (string item in urllist)
     {
       this.linkList.Items.Add(item);
     }
   }
   #endregion

运行效果出下:

      var urlandTitle = xelement.Descendants().Where(element =>

                element.LastAttribute.Name.LocalName.Contains("url"))
        .Select(nd => new
        {
          title = nd.Attribute("title").Value,
          url = nd.Attribute("url").Value
        });

      foreach (var item in urlandTitle)
      {
        ListItem i = new ListItem(item.title, item.url);
        this.linkList.Items.Add(i);
      }
    }
    #endregion

运行效果如下所示:

      var node = xelement.Descendants().Where(sel => 

                (string)sel.Attribute("title") == "Favorite Social Sites")
        .SelectMany(sel => sel.Elements()).Select(nd =>

                 new { title = nd.Attribute("title").Value, url = nd.Attribute("url").Value });

      foreach (var item in node)
      {
        ListItem i = new ListItem(item.title, item.url);
        this.linkList.Items.Add(i);
      }
    }
    #endregion

  运行效果如下:

使用LINQ查询ASP.NET中的Sitemap

  关于linq to xml的操作有很多相关的文章,我在这里也是最基本的操作,如果你是初学者想到更高的层次,建议可以到MSDN上去学习;


本文导航
  • 下一篇文章: 没有了
PCSOTO首页 | 广告服务 | 人员招聘( 月) | 站点地图 | 联系方式 | RSS订阅 | 友情链接 | 技术论坛 | 网址 | PCSOTO技术QQ群:61805201
本站所有资源均来自网络,版权归原作者所有!如有侵犯作者版权,请及时通知本站刊正。欢迎您的任何建议、意见、批评和鼓励!
Copyright © 2008 - PCSOTO.COM. All rights reserved. 武汉电脑网 版权所有.