记录一下,别的都比较普通,只有这一句比较有意思。
doc.Root.Descendants("").Select(p=> new {}).Where();
跟jQuery的层级筛选比较类似jQuery("").children().first().html();
doc.Root.Descendants("floor").Select(p => new
        {
            Name 
= p.Element("name").Value
        }).Where(p 
=> p.Name == "1楼层xml");

 

大气象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Linq;

/// <summary>
///DFBLL 的摘要说明
/// </summary>
public class DFBLL
{
    
public DFBLL()
    {
        
//
        
//TODO: 在此处添加构造函数逻辑
        
//
    }

    
#region 楼层

    
//楼层信息
    public static List<ItemFloor> GetFloorInfo()
    {
        XDocument doc 
= XDocument.Load(GetXmlFile());

        var items 
= doc.Root.Descendants("floor").Select(p => new
        {
            Name 
= p.Element("name").Value
        }).Where(p 
=> p.Name == "1楼层xml");
        List
<ItemFloor> myList = new List<ItemFloor>();
        
foreach (var item in items)
        {
            ItemFloor it 
= new ItemFloor
            {
                Name 
= item.Name
            };
            myList.Add(it);
        }
        
return myList;
    }

    
#endregion

    
#region 工程

    
//工程信息
    public static List<ItemProject> GetProInfo()
    {
        XDocument doc 
= XDocument.Load(GetXmlFile());

        var items 
= doc.Root.Descendants("structure").Select(p => new
        {
            Name 
= p.Element("name").Value
        });
        List
<ItemProject> myList = new List<ItemProject>();
        
foreach (var item in items)
        {
            ItemProject it 
= new ItemProject
            {
                Name 
= item.Name
            };
            myList.Add(it);
        }
        
return myList;
    }

    
#endregion

    
#region 留言簿

    
//返回路径
    public static string GetXmlFile()
    {
        
return HttpContext.Current.Server.MapPath("XmlDB/project.xml");
    }
    
//查询留言
    public static List<Item> GetGuestList()
    {
        XDocument doc 
= XDocument.Load(GetXmlFile());

        var items 
= doc.Root.Descendants("item").Select(p => new
        {
            ID 
= Convert.ToInt32(p.Element("id").Value),
            Name 
= p.Element("name").Value,
            Email 
= p.Element("email").Value,
            Logo 
= p.Element("logo").Value,
            Content 
= p.Element("content").Value,
            AddTime 
= p.Element("addtime").Value,
            IP 
= p.Element("ip").Value
        });
        List
<Item> myList = new List<Item>();
        
foreach (var item in items)
        {
            Item it 
= new Item
            {
                AddTime 
= item.AddTime,
                Content 
= item.Content,
                Email 
= item.Email,
                ID 
= item.ID,
                IP 
= item.IP,
                Logo 
= item.Logo,
                Name 
= item.Name
            };
            myList.Add(it);
        }
        
return myList;
    }

    
//增加留言
    public static void InsertGuest(Item item)
    {
        XDocument doc 
= XDocument.Load(GetXmlFile());
        XElement contacts 
= new XElement("item",
            
new XElement("id", item.ID),
            
new XElement("name", item.Name),
            
new XElement("email", item.Email),
            
new XElement("logo", item.Logo),
            
new XElement("content", item.Content),
            
new XElement("addtime", item.AddTime),
            
new XElement("ip", HttpContext.Current.Request.UserHostAddress)
            );
        doc.Root.AddFirst(contacts);
        doc.Save(GetXmlFile());
    }
    
//删除留言
    public static void DeleteGuest(int id)
    {
        XDocument xml 
= XDocument.Load(GetXmlFile());
        var contacts 
= from p in xml.Root.Elements("item")
                       
where p.Element("id").Value == id.ToString()
                       select p;
        contacts.Remove();
        xml.Save(GetXmlFile());
    }

    
#endregion
}

 

另外记录一个知识点:
当你在Silverlight中调用Web Serivce的方法是,比如你建了个类似这样的类。

大气象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

    
/// <summary>
    
///Item 的摘要说明
    
/// </summary>
    public class ItemFloor
    {
        
public ItemFloor()
        {
            
//
            
//TODO: 在此处添加构造函数逻辑
            
//
        }

        
public string Name { getset; }
    }

 

在Silverlight项目中想得到这样的引用:

HCLoad.HCLoadServiceReference.ItemFloor item = new HCLoad.HCLoadServiceReference.ItemFloor();
必须在Web Service中包含返回此类似的Web Service方法。比如:
#region 楼层

[WebMethod]
public List<ItemFloor> GetFloorList()
{
    
return DFBLL.GetFloorInfo();
}

 

如果不这样,在Silverlight中的引用就分报错。

参考:Linq To Xml、XPath得到两种格式的xml

前言:初学linq to xml ,做例子总结以防时间长忘记,望高手指点。

 

第一种格式

1
2 <userInfoList>
3 <userInfo>
4 <name>呵呵</name>
5 <age>18</age>
6 </userInfo>
7 <userInfo>
8 <name>哈哈</name>
9 <age>20</age>
10 </userInfo>
11 </userInfoList>

 

第二种格式

>

一、获得xml列表

使用Linq To Xml得到第一种格式的xml

 

相关文章:

  • 2021-07-03
  • 2021-09-23
  • 2022-12-23
  • 2022-02-03
  • 2022-12-23
  • 2021-09-14
猜你喜欢
  • 2021-11-14
  • 2022-03-06
  • 2022-02-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
  • 2022-12-23
相关资源
相似解决方案