LINQ XML的基本操作

前端之家收集整理的这篇文章主要介绍了LINQ XML的基本操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自: http://blog.csdn.net/chinajiyong/article/details/7485019

这几天想写点基础的博客内容,正好最近在用XML,就写了一点XML的基本操作。

通过函数的形式表现出来。

  1. /*
  2. @H_301_29@-------------------------------------
  3. Context:LINQTOXML
  4. @H_301_29@-------------------------------------
  5. Author:Chinajiyong
  6. @H_301_29@-------------------------------------
  7. DateTime:2012-04-21
  8. @H_301_29@-------------------------------------
  9. 通过函数的形式表现出来
  10. @H_301_29@-------------------------------------
  11. */
[csharp] view plain copy
  1. ///<summary>
  2. @H_301_29@///1、创建BookStore.xml的XML文件,由函数CreateXmlFile()完成
  3. ///</summary>
[csharp] view plain copy
  1. ///<paramname="xmlpath">XML文件的路径</param>
  2. @H_301_29@privatestaticvoidCreateXmlFile(stringxmlpath)
  3. {
  4. @H_301_29@XDocumentdoc=newXDocument(///创建XDocument类的实例
  5. newXDeclaration("1.0","utf-8","yes"),///XML的声明,包括版本,编码,xml文件是否独立
  6. @H_301_29@newXElement("Books",///添加根节点
  7. newXElement("Book",///添加一个节点
  8. @H_301_29@newXAttribute("BookID","001"),///添加属性BookID
  9. newXElement("BookNo","0001"),///添加元素BookNo
  10. @H_301_29@newXElement("BookName","Book0001"),///添加元素BookName
  11. newXElement("BookPrice","40"),///添加元素BookPrice
  12. @H_301_29@newXElement("BookRemark","Thisisabook0001")///添加元素BookRemark
  13. )
  14. @H_301_29@)
  15. );
  16. @H_301_29@///保存XML文件到指定地址
  17. doc.Save(xmlpath);
  18. @H_301_29@Console.WriteLine(doc);
  19. }
调用函数CreateXmlFile(string xmlpath)
[csharp] view plain copy
  1. staticvoidMain(string[]args)
  2. @H_301_29@{
  3. ///创建一个名为BookStore.xml的xml文件
  4. @H_301_29@Program.CreateXmlFile(@"C:\BookStore.xml");
  5. }

运行结果:


[csharp] view plain copy
  1. ///<summary>
  2. @H_301_29@///2、添加元素
  3. ///</summary>
  4. @H_301_29@///<paramname="xmlpath">XML文件的路径</param>
  5. privatestaticvoidAddXmlElement(stringxmlpath)
  6. @H_301_29@{
  7. ///导入XML文件
  8. @H_301_29@XElementxe=XElement.Load(xmlpath);
  9. ///创建一个新节点
  10. @H_301_29@XElementbook1=newXElement("Book",
  11. newXAttribute("BookID","002"),
  12. @H_301_29@newXElement("BookNo","0002"),
  13. newXElement("BookName","Book0002"),
  14. @H_301_29@newXElement("BookPrice","50"),
  15. newXElement("BookRemark","Thisisabook0002")
  16. @H_301_29@);
  17. ///添加节点到XML文件中,并保存
  18. @H_301_29@xe.Add(book1);
  19. ///创建一个新节点
  20. @H_301_29@XElementbook2=newXElement("Book","003"),"0003"),"Book0003"),"30"),"Thisisabook0003") @H_301_29@);
  21. ///添加节点到XML文件中,并保存
  22. @H_301_29@xe.Add(book2);
  23. ///创建一个新节点
  24. @H_301_29@XElementbook3=newXElement("Book","004"),"0004"),"Book0004"),"60"),"Thisisabook0004") @H_301_29@);
  25. ///添加节点到XML文件
  26. @H_301_29@xe.Add(book3);
  27. ///保存到XML文件
  28. @H_301_29@xe.Save(xmlpath);
  29. @H_301_29@Console.WriteLine(xe);
  30. }
调用函数AddXmlElement(string xmlpath)

[csharp] view plain copy
  1. ///添加XML元素
  2. @H_301_29@Program.AddXmlElement(@"C:\BookStore.xml");
运行结果:


[csharp] view plain copy
  1. ///<summary>
  2. @H_301_29@///3、修改XML文件的元素
  3. ///</summary>
  4. @H_301_29@///<paramname="xmlpath">XML文件的路径</param>
  5. ///<paramname="strElement">指定的修改元素</param>
  6. @H_301_29@privatestaticvoidModifyXmlElement(stringxmlpath,stringstrElement)
  7. {
  8. @H_301_29@XElementxe=XElement.Load(xmlpath);
  9. ///查询修改的元素
  10. @H_301_29@IEnumerable<XElement>element=fromeinxe.Elements("Book")
  11. wheree.Attribute("BookID").Value==strElement
  12. @H_301_29@selecte;
  13. ///修改元素
  14. @H_301_29@if(element.Count()>0)
  15. {
  16. @H_301_29@XElementfirstelement=element.First();
  17. ///设置新的属性
  18. @H_301_29@firstelement.SetAttributeValue("BookID","new004");
  19. ///替换成新的节点
  20. @H_301_29@firstelement.ReplaceNodes(
  21. newXElement("BookNo","new0004"),
  22. @H_301_29@newXElement("BookName","Booknew0004"),
  23. newXElement("BookPrice","45"),
  24. @H_301_29@newXElement("BookRemark","Thisisabooknew0004")
  25. );
  26. @H_301_29@}
  27. xe.Save(xmlpath);
  28. @H_301_29@Console.WriteLine(xe);
  29. }
调用函数ModifyXmlElement(string xmlpath,string strElement)
[csharp] view plain copy
  1. ///修改XML文件的元素
  2. @H_301_29@Program.ModifyXmlElement(@"C:\BookStore.xml","004");

运行结果:

[csharp] view plain copy
  1. ///<summary>
  2. @H_301_29@///4、删除XML文件的元素
  3. ///</summary>
  4. @H_301_29@///<paramname="xmlpath">XML文件的路径</param>
  5. ///<paramname="strElement">指定删除元素</param>
  6. @H_301_29@privatestaticvoidDeleteXmlElement(stringxmlpath,stringstrElement)
  7. {
  8. @H_301_29@XElementxe=XElement.Load(xmlpath);
  9. ///查询修改的元素
  10. @H_301_29@IEnumerable<XElement>element=fromeinxe.Elements("Book")
  11. wheree.Attribute("BookID").Value==strElement
  12. @H_301_29@selecte;
  13. ///修改元素
  14. @H_301_29@if(element.Count()>0)
  15. {
  16. @H_301_29@XElementfirstelement=element.First();
  17. ///删除此元素的所有节点和属性
  18. @H_301_29@firstelement.RemoveAll();
  19. ///删除此元素的属性
  20. @H_301_29@//firstelement.RemoveAttributes();
  21. ///删除此元素的子节点
  22. @H_301_29@//firstelement.RemoveNodes();
  23. }
  24. @H_301_29@xe.Save(xmlpath);
  25. Console.WriteLine(xe);
  26. @H_301_29@}
调用函数DeleteXmlElement(string xmlpath,string strElement)
[csharp] view plain copy
  1. ///删除XML元素
  2. @H_301_29@Program.DeleteXmlElement(@"C:\BookStore.xml","new004");
运行结果:


[csharp] view plain copy
  1. ///<summary>
  2. @H_301_29@///5、将XML文件中的属性更换成元素
  3. ///</summary>
  4. @H_301_29@///<paramname="xmlpath">XML文件的路径</param>
  5. ///<paramname="strAttribute">指定要更换的属性</param>
  6. @H_301_29@privatestaticvoidConvertAttributeToElement(stringxmlpath,stringstrAttribute)
  7. {
  8. @H_301_29@XElementxe=XElement.Load(xmlpath);
  9. ///查询更换的元素
  10. @H_301_29@IEnumerable<XElement>element=fromeinxe.Elements("Book")
  11. wheree.Attribute("BookID").Value==strAttribute
  12. @H_301_29@selecte;
  13. ///更换为元素
  14. @H_301_29@if(element.Count()>0)
  15. {
  16. @H_301_29@XElementfirstelement=element.First();
  17. //获取第一个属性
  18. @H_301_29@XAttributeattr=firstelement.FirstAttribute;
  19. //XAttributeattr=firstelement.Attribute("BookID");
  20. @H_301_29@///将属性转换成元素
  21. firstelement.AddFirst(
  22. @H_301_29@newXElement(attr.Name,attr.Value)//添加BookID元素
  23. );
  24. @H_301_29@///删除属性
  25. firstelement.RemoveAttributes();
  26. @H_301_29@}
  27. xe.Save(xmlpath);
  28. @H_301_29@Console.WriteLine(xe);
  29. }
调用函数:ConvertAttributeToElement(string xmlpath,string strAttribute)
[csharp] view plain copy
  1. ///删除XML元素
  2. @H_301_29@//Program.DeleteXmlElement(@"C:\BookStore.xml","new004");//注释这一样
  3. @H_301_29@///将文件中的属性更换成元素
  4. Program.ConvertAttributeToElement(@"C:\BookStore.xml","new004");

运行结果:


[csharp] view plain copy
  1. ///<summary>
  2. @H_301_29@///6、查询根元素
  3. ///</summary>
  4. @H_301_29@///<paramname="xmlpath">XML文件的路径</param>
  5. privatestaticvoidQueryRootElement(stringxmlpath)
  6. @H_301_29@{
  7. XDocumentdoc=XDocument.Load(xmlpath);
  8. @H_301_29@Console.WriteLine(doc.Root.Name);
  9. //IEnumerable<XElement>RootElement=fromrootindoc.Elements("Books")
  10. @H_301_29@//selectroot;
  11. /////输出根元素
  12. @H_301_29@//foreach(XElementxeinRootElement)
  13. //{
  14. @H_301_29@//Console.WriteLine(xe.Name);
  15. //}
  16. @H_301_29@}
[csharp] view plain copy
  1. <strong><spanstyle="font-size:18px;">调用函数:QueryRootElement(stringxmlpath)</span></strong>
[csharp] view plain copy
  1. <prename="code"class="csharp">///查询根元素
  2. @H_301_29@Program.QueryRootElement(@"C:\BookStore.xml");</pre><strong><spanstyle="font-size:18px">运行结果:</span></strong><p></p>
  3. <pre></pre>
  4. @H_301_29@<prename="code"class="csharp"style="background-color:rgb(255,255,255);">Books</pre><prename="code"class="csharp">///<summary>
  5. ///7、查询指定名称的元素
  6. @H_301_29@///</summary>
  7. ///<paramname="xmlpath">XML文件的路径</param>
  8. @H_301_29@///<paramname="strName">查询元素名称</param>
  9. privatestaticvoidQueryElementByName(stringxmlpath,stringstrName)
  10. @H_301_29@{
  11. XElementxe=XElement.Load(xmlpath);
  12. @H_301_29@///查询元素
  13. varelements=xe.Elements("Book")
  14. @H_301_29@.Where(e=>(string)e.Element("BookName")==strName)
  15. .OrderBy(e=>e.Element("BookName"))
  16. @H_301_29@.ToList();
  17. elements.ForEach(e=>Console.WriteLine(e));
  18. @H_301_29@}</pre><strong><spanstyle="font-size:18px">调用函数:QueryElementByName(stringxmlpath,stringstrName)</span></strong><br>
  19. <br>
  20. @H_301_29@<prename="code"class="csharp">///查询指定名称的元素
  21. Program.QueryElementByName(@"C:\BookStore.xml","Book0003");</pre><strong><spanstyle="font-size:18px">运行结果:</span></strong>
  22. @H_301_29@<p></p>
  23. <p><imgsrc="http://my.csdn.net/uploads/201204/21/1335011713_3231.png"alt=""><br>
  24. @H_301_29@<br>
  25. </p><prename="code"class="csharp">///<summary>
  26. @H_301_29@///8、查询指定属性的元素
  27. ///</summary>
  28. @H_301_29@///<paramname="xmlpath">XML文件的路径</param>
  29. ///<paramname="strName">指定的属性</param>
  30. @H_301_29@privatestaticvoidQueryElementByAttribute(stringxmlpath,stringstrAttribute)
  31. {
  32. @H_301_29@XElementxe=XElement.Load(xmlpath);
  33. ///查询元素
  34. @H_301_29@vareAttribute=xe.Elements("Book")
  35. .Where(e=>(string)e.Attribute("BookID")==strAttribute)
  36. @H_301_29@.OrderBy(e=>e.Element("BookID"))
  37. .ToList();
  38. @H_301_29@eAttribute.ForEach(e=>Console.WriteLine(e));
  39. }</pre><strong><spanstyle="font-size:18px">调用函数:QueryElementByAttribute(stringxmlpath,stringstrAttribute)</span></strong><br>
  40. @H_301_29@<prename="code"class="csharp">///查询指定属性的元素
  41. Program.QueryElementByAttribute(@"C:\BookStore.xml","003");</pre><spanstyle="font-size:18px"><strong>运行结果:</strong></span><p></p>
  42. @H_301_29@<p><imgsrc="http://my.csdn.net/uploads/201204/21/1335011840_7341.png"alt=""><br>
  43. </p><prename="code"class="csharp">///<summary>
  44. @H_301_29@///9、查询指定元素的子元素
  45. ///</summary>
  46. @H_301_29@///<paramname="xmlpath">XML文件的路径</param>
  47. ///<paramname="strSubElement">指定元素</param>
  48. @H_301_29@privatestaticvoidQuerySubElement(stringxmlpath,stringstrSubElement)
  49. {
  50. @H_301_29@XElementxe=XElement.Load(xmlpath);
  51. varelements=xe.Elements("Book")
  52. @H_301_29@.Descendants("BookRemark")
  53. .ToList();
  54. @H_301_29@foreach(vareinelements)
  55. {
  56. @H_301_29@Console.WriteLine(e.Name.LocalName+"\t"+e.Value);
  57. }
  58. @H_301_29@}</pre><strong><spanstyle="font-size:18px">调用函数:QuerySubElement(stringxmlpath,stringstrSubElement)</span></strong><p></p>
  59. <p></p><prename="code"class="csharp">///查询指定元素的子元素
  60. @H_301_29@Program.QuerySubElement(@"C:\BookStore.xml","BookRemark");</pre><spanstyle="font-size:18px"><strong>运行结果:</strong></span><p></p>
  61. <p><imgsrc="http://my.csdn.net/uploads/201204/21/1335011970_6889.png"alt=""></p>
  62. @H_301_29@<p></p><prename="code"class="csharp">///<summary>
  63. ///10、查询元素并排序
  64. @H_301_29@///</summary>
  65. ///<paramname="xmlpath">XML文件的路径</param>
  66. @H_301_29@privatestaticvoidQueryElementByOrder(stringxmlpath)
  67. {
  68. @H_301_29@XElementxe=XElement.Load(xmlpath);
  69. varelements=xe.Elements("Book")
  70. @H_301_29@.Where(e=>Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length-1,1))>1)
  71. .OrderByDescending(e=>(string)e.Element("BookName"))
  72. @H_301_29@.ToList();
  73. elements.ForEach(e=>Console.WriteLine(e.Element("BookName").Value));
  74. @H_301_29@}</pre><strong><spanstyle="font-size:18px">调用函数:QueryElementByOrder(stringxmlpath)</span></strong><br>
  75. <prename="code"class="csharp">///查询元素并排序
  76. @H_301_29@Program.QueryElementByOrder(@"C:\BookStore.xml");</pre><spanstyle="font-size:18px"><strong>运行结果:</strong></span><p></p>
  77. <p><imgsrc="http://my.csdn.net/uploads/201204/21/1335012340_2136.png"alt=""><br>
  78. @H_301_29@</p><prename="code"class="csharp">///<summary>
  79. ///11、查询元素并计算Price平均值
  80. @H_301_29@///</summary>
  81. ///<paramname="xmlpath">XML文件的路径</param>
  82. @H_301_29@privatestaticvoidQueryElementByCoeompute(stringxmlpath)
  83. {
  84. @H_301_29@XElementxe=XElement.Load(xmlpath);
  85. varelements=xe.Elements("Book")
  86. @H_301_29@.Where(e=>Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length-1,1))>1)
  87. .OrderByDescending(e=>(string)e.Element("BookName"))
  88. @H_301_29@.ToList();
  89. Console.WriteLine("Average:"+elements.Average(e=>Convert.ToInt32(e.Element("BookPrice").Value)));
  90. @H_301_29@}</pre><strong><spanstyle="font-size:18px">调用函数:QueryElementByCoeompute(stringxmlpath)</span></strong><br>
  91. <prename="code"class="csharp">///查询元素并计算Price平均值
  92. @H_301_29@Program.QueryElementByCoeompute(@"C:\BookStore.xml");</pre><strong><spanstyle="font-size:18px">运行结果:</span></strong><p></p>
  93. <p><imgsrc="http://my.csdn.net/uploads/201204/21/1335012463_5700.png"alt=""><br>
  94. @H_301_29@<br>
  95. </p>
  96. @H_301_29@<p><spanstyle="font-size:18px">到此为止全部操作已经完成。整个操作仍然很简单。</span></p>

猜你在找的XML相关文章