这里主要介绍DOM模型和LINQ模型操作XML的区别,包括介绍LINQ模型上看出XElement的重要性和使用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是晚绑定语言,可以充分发挥它的优势。
                新闻标题:LINQ模型对比全面剖析
                
                网页路径:http://www.csdahua.cn/qtweb/news44/454144.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网