使用linq来操作xml对象,这里简单的举了一些例子
/// <summary> ///1、新建 XML文件 /// </summary> /// <param name="xmlpath"> XML文件的路径</param> private static void CreateXmlFile(string xmlpath) { XDocument doc = new XDocument( ///创建XDocument类的实例 new XDeclaration("1.0", "utf-8", "yes"),///XML的声明,包括版本,编码,xml文件是否独立 new XElement("Books", ///添加根节点 new XElement("Book", ///添加一个节点 new XAttribute("BookID", "001"),///添加属性BookID new XElement("BookNo", "0001"), ///添加元素BookNo new XElement("BookName", "Book 0001"),///添加元素BookName new XElement("BookPrice", "40"),///添加元素BookPrice new XElement("BookRemark", "This is a book 0001")///添加元素BookRemark ) ) ); ///保存XML文件到指定地址 doc.Save(xmlpath); Console.WriteLine(doc); }
/// <summary> /// 2、添加元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void AddXmlElement(string xmlpath) { ///导入XML文件 XElement xe = XElement.Load(xmlpath); ///创建一个新节点 XElement book1 = new XElement("Book", new XAttribute("BookID", "002"), new XElement("BookNo", "0002"), new XElement("BookName", "Book 0002"), new XElement("BookPrice", "50"), new XElement("BookRemark", "This is a book 0002") ); ///添加节点到XML文件中,并保存 xe.Add(book1); ///创建一个新节点 XElement book2 = new XElement("Book", new XAttribute("BookID", "003"), new XElement("BookNo", "0003"), new XElement("BookName", "Book 0003"), new XElement("BookPrice", "30"), new XElement("BookRemark", "This is a book 0003") ); ///添加节点到XML文件中,并保存 xe.Add(book2); ///创建一个新节点 XElement book3 = new XElement("Book", new XAttribute("BookID", "004"), new XElement("BookNo", "0004"), new XElement("BookName", "Book 0004"), new XElement("BookPrice", "60"), new XElement("BookRemark", "This is a book 0004") ); ///添加节点到XML文件中 xe.Add(book3); ///保存到XML文件中 xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 3、修改XML文件的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strElement">指定的修改元素</param> private static void ModifyXmlElement(string xmlpath, string strElement) { XElement xe = XElement.Load(xmlpath); ///查询修改的元素 IEnumerable<XElement> element = from e in xe.Elements("Book") where e.Attribute("BookID").Value == strElement select e; ///修改元素 if (element.Count() > 0) { XElement firstelement = element.First(); ///设置新的属性 firstelement.SetAttributeValue("BookID", "new004"); ///替换成新的节点 firstelement.ReplaceNodes( new XElement("BookNo", "new0004"), new XElement("BookName", "Book new0004"), new XElement("BookPrice", "45"), new XElement("BookRemark", "This is a book new0004") ); } xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 4、删除XML文件的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strElement">指定删除元素</param> private static void DeleteXmlElement(string xmlpath, string strElement) { XElement xe = XElement.Load(xmlpath); ///查询修改的元素 IEnumerable<XElement> element = from e in xe.Elements("Book") where e.Attribute("BookID").Value == strElement select e; ///修改元素 if (element.Count() > 0) { XElement firstelement = element.First(); //删除该节点 firstelement.Remove(); ///删除此元素的所有节点和属性 ///firstelement.RemoveAll(); ///删除此元素的属性 //firstelement.RemoveAttributes(); ///删除此元素的子节点 //firstelement.RemoveNodes(); } xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 5、将XML文件中的属性更换成元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strAttribute">指定要更换的属性</param> private static void ConvertAttributeToElement(string xmlpath, string strAttribute) { XElement xe = XElement.Load(xmlpath); ///查询更换的元素 IEnumerable<XElement> element = from e in xe.Elements("Book") where e.Attribute("BookID").Value == strAttribute select e; ///更换为元素 if (element.Count() > 0) { XElement firstelement = element.First(); //获取第一个属性 XAttribute attr = firstelement.FirstAttribute; ///将属性转换成元素 firstelement.AddFirst( new XElement(attr.Name, attr.Value)//添加BookID元素 ); ///删除属性 firstelement.RemoveAttributes(); } xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 6、查询根元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void QueryRootElement(string xmlpath) { XDocument doc = XDocument.Load(xmlpath); Console.WriteLine(doc.Root.Name); }
/// <summary> /// 7、查询指定名称的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strName">查询元素名称</param> private static void QueryElementByName(string xmlpath, string strName) { XElement xe = XElement.Load(xmlpath); ///查询元素 var elements = xe.Elements("Book") .Where(e => (string)e.Element("BookName") == strName) .OrderBy(e => e.Element("BookName")) .ToList(); elements.ForEach(e => Console.WriteLine(e)); }
/// <summary> /// 8、查询指定属性的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strName">指定的属性</param> private static void QueryElementByAttribute(string xmlpath, string strAttribute) { XElement xe = XElement.Load(xmlpath); ///查询元素 var eAttribute = xe.Elements("Book") .Where(e => (string)e.Attribute("BookID") == strAttribute) .OrderBy(e => e.Element("BookID")) .ToList(); eAttribute.ForEach(e => Console.WriteLine(e)); }
/// <summary> /// 9、查询元素并按指定的子元素排序 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strSubElement">指定元素</param> private static void QuerySubElement(string xmlpath) { XElement xe = XElement.Load(xmlpath); var elements = xe.Elements("Book") .Descendants("BookRemark") .ToList(); foreach (var e in elements) { Console.WriteLine(e.Name.LocalName + "\t" + e.Value); } }
/// <summary> /// 10、查询元素并排序 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void QueryElementByOrder(string xmlpath) { XElement xe = XElement.Load(xmlpath); var elements = xe.Elements("Book") .Where(e => Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length - 1, 1)) > 1) .OrderByDescending(e => (string)e.Element("BookName")) .ToList(); elements.ForEach(e => Console.WriteLine(e.Element("BookName").Value)); }
/// <summary> /// 11、查询元素并计算Price平均值 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void QueryElementByCoeompute(string xmlpath) { XElement xe = XElement.Load(xmlpath); var elements = xe.Elements("Book") .Where(e => Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length - 1, 1)) > 1) .OrderByDescending(e => (string)e.Element("BookName")) .ToList(); Console.WriteLine("Average:" + elements.Average(e => Convert.ToInt32(e.Element("BookPrice").Value))); }
static void Main(string[] args) { string xmlpath = @"F:\程序案例\LinqToXmlTest\LinqToXmlTest\BookStore.xml"; ///1、创建一个名为BookStore.xml的xml文件 //CreateXmlFile(xmlpath); ///2、添加XML元素 //AddXmlElement(xmlpath); ///3、修改XML文件的元素 //ModifyXmlElement(xmlpath, "004"); ///4、删除XML元素 //DeleteXmlElement(xmlpath, "new004"); ///5、将文件中的属性更换成元素 //ConvertAttributeToElement(xmlpath, "new004"); ///6、查询根元素 //QueryRootElement(path); /// 7、查询指定名称的元素 // QueryElementByName(xmlpath, "Book 0002"); /// 9、查询元素并按指定的子元素排序 //QuerySubElement(xmlpath); /// 10、查询元素并排序 //QueryElementByOrder(xmlpath); /// 11、查询元素并计算Price平均值 QueryElementByCoeompute(xmlpath); Console.ReadKey(); }
相关推荐
LINQ TO XML操作示例 轻轻松松 学会简单操作 本例子包含了通过LINQ创建XML、加载XML、读取XML、修改XML元素、属性、删除XML元素节点、属性,XML排序,保存XML等 基本上XML的操作都包含在这里面了。 适合学习LINQ...
LINQ TO SQL ,LINQ TO XML,LINQ中文教程,是强人书写的,制作有点粗糙,但是,是好教材
Linq to xml,读取XMl节点值,linq,读取XMl节点值绑定。
LINQ To Xml示例程序
示例描述:本章介绍LINQ to XML相关技术和使用。 CreateSimpleXMLTree 演示通过XElement创建简单的XML树。 CreateAttributeElement 演示通过XElement创建具有属性的XML元素。 CreateSubElement 演示通过...
使用Linq To XML操作XML.pdf 中文电子文档
学习LINQ的目前国内现有的最好的资源,有LINQ to xml的精讲,LINQ 的初级,高级学习,是学习LINQ的好资源。
LINQ to XML操作XML的代码,通过它很快掌握用内存在对象方式操作XML数据
简单的linq to xml实例,测试过,可运行
linq to xml入门的例
本书部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法...
Linq 大全 Linq To Sql Linq To DataSet Linq To Object Linq to Xml
网上一大堆旧版的XmlHelper,用的实在是不爽,今天发布 Linq to Xml 操作帮助类,新技术,简易操作,说明详细,值得收藏!
Linq开发宝典 LInq入门宝典 Linq To Xml linq to sql
LINQ操作XML,对XML的基本操作,包括创建XML、查询、修改、删除等
Linq to xml 简单案例
一个Linq to XML的小练习例程,用linq读取保存和修改xml文件
使用linq to xml读取xml文件内容
linq to xml的一些例子 /**/////根据元素的名称进行筛选(有命名空间) 1 /**/////链接轴方法 2 /**/////链接轴方法,有时,当可能存在或不存在间隔上级时,您希望在特定的元素深度,检索所有的元素 2 /**/////检索...
LINQ to XML 编程基础