网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> VB编程 >> 文章正文
  C#3.0之LINQ(3)            【字体:
C#3.0之LINQ(3)
作者:佚名    文章来源:不详    点击数:    更新时间:2007-8-16    

我们知道关于XML,W3C有一套DOM模型,C#语言有一套在DOM模型下操作XML的类库。
正在装载数据……
但是在LINQ出现以后,微软又重新做了一套关于XML的模型,而且操作起来同那套DOM模型没什么两样,但是更加的简单。

下面看一下这套模型的图:

 

以上是一套新的类库。其中最核心的类就是XElement,不要看它的层次低,但是绝对是核心。还有一些其他特性与DOM模型不一样,其中之一就是XAttribute和XNode在同一个层次上,还有就是XDocument不再是必须的。其他不同点可以参考DOM模型自己比较。

下面用代码对比一下DOM模型和LINQ模型操作XML的区别:

//DOM模型

XmlDocument doc 
= new XmlDocument();
XmlElement name 
= doc.CreateElement("name");
name.InnerText 
= "Patrick Hines";
XmlElement phone1 
= doc.CreateElement("phone");
phone1.SetAttribute(
"type""home");
phone1.InnerText 
= "206-555-0144";        
XmlElement phone2 
= doc.CreateElement("phone");
phone2.SetAttribute(
"type""work");
phone2.InnerText 
= "425-555-0145";        
XmlElement street1 
= doc.CreateElement("street1");        
street1.InnerText 
= "123 Main St";
XmlElement city 
= doc.CreateElement("city");
city.InnerText 
= "Mercer Island";
XmlElement state 
= doc.CreateElement("state");
state.InnerText 
= "WA";
XmlElement postal 
= doc.CreateElement("postal");
postal.InnerText 
= "68042";
XmlElement address 
= doc.CreateElement("address");
address.AppendChild(street1);
address.AppendChild(city);
address.AppendChild(state);
address.AppendChild(postal);
XmlElement contact 
= doc.CreateElement("contact");
contact.AppendChild(name);
contact.AppendChild(phone1);
contact.AppendChild(phone2);
contact.AppendChild(address);
XmlElement contacts 
= doc.CreateElement("contacts");
contacts.AppendChild(contact);
doc.AppendChild(contacts);
//LINQ模型

XElement contacts 
=
    
new XElement("contacts",
        
new XElement("contact",
            
new XElement("name""Patrick Hines"),
            
new XElement("phone""206-555-0144"
                
new XAttribute("type""home")),
            
new XElement("phone""425-555-0145",
                
new XAttribute("type""work")),
            
new XElement("address",
                
new XElement("street1""123 Main St"),
                
new XElement("city""Mercer Island"),
                
new XElement("state""WA"),
                
new XElement("postal""68042")
            )
        )
    );

从对比上我们也可以看出LINQ模型的简单性。我们还可以从LINQ模型上看出XElement的重要性。使用XElement不仅可以从头创建xml文件,还可以使用Load的方法从文件加载。还可以从数据库中取出所需元素,这就要用到LINQ TO SQL的东西了,同样可以从数组中取出元素。操作完成后可以使用Save方法进行保存。

下面简单介绍一下增删查改XML。

//查询
foreach (c in contacts.Nodes()) {
Console.WriteLine(c);
}

我们看到在输出XML元素的时候并不需要对每个元素进行强制的类型转换,这里C#编译器已经做了这些事情,它会在输出的时候调用每个元素的ToString()方法。

//插入元素
XElement mobilePhone = new XElement("phone""206-555-0168");
contact.Add(mobilePhone);

这里只是很简单的演示一些操作,至于那些复杂的操作,只要DOM模型能实现的LINQ模型就一定能实现。插入的时候还可以使用AddAfterThis和AddBeforeThis等方法,提高效率。

//删除元素
contact.Element("phone").Remove();                                                      //删除某一具体元素
contact.Elements("phone").Remove();                                                    //删除一组元素
contacts.Element("contact").Element("address").RemoveContent();      //删除某一元素内容

删除元素还可以使适用SetElement方法,把某一元素设置为null也就是删除了这元素。

//修改元素
contact.Element("phone").ReplaceContent("425-555-0155");    //这里是修改第一个phone元素的内容

当然同样可以使用SetElement方法,这里才是它的用武之地。

从上面简单的介绍我们可以清楚的看到,使用LINQ操作XML是多么的简单,这里使用的C#语法,如果要是使用VB.NET还会更简单。有一些方法在VB.NET中可以使用但是在C#中却没有。毕竟VB.NET是晚绑定语言,可以充分发挥它的优势。

 




本文来源:http://blog.csdn.net/kittyjie/archive/2007/08/14/1742661.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     如何在ado中使用connect…
     vb 贪吃蛇 单人版游戏 (…
     关于在vb中进行com组件的…
     用vb6.0编写自我升级的程…
     vb自动登陆网络站点详解…
     vb打造超酷个性化菜单(…
  • EJB3.0入门

  • visual C++ 6.0开发工具与调…

  • OpenCV在VC.net,VC6.0等中的…

  • 关于C#中委托的学习

  • 《程序员》9期上市,Enterpr…

  • C# 编码规则

  • C#获取IP地址接口编程

  • delegate C#关键字 (委托类型…

  • Turbo C 2.0 函数中文说明大…

  • C# VS Java

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David