zoukankan      html  css  js  c++  java
  • linq to xml(C#)

      1 using System;
      2 using System.Collections.Generic;
      3 
      4 //用KVP来代替KeyValuePair<string,string>;相当于C中的typedef
      5 using KVP = System.Collections.Generic.KeyValuePair<string,string>;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Xml.Linq;
      9 using System.IO;
     10 using System.Collections;
     11 
     12 namespace Helper
     13 {
     14 class xmlHelper
     15 {
     16 public xmlHelper()
     17 { }
     18 
     19 #region 创建XML
     20 /// <summary>
     21 /// 创建XML,
     22 /// 首先根据要创建的路径是否有要创建的xml文档,
     23 /// 若有,则不做操作直接返回。
     24 /// 若无,则按要求新建XML文档。
     25 /// </summary>
     26 /// <param name="xmlPath">xml所在路径(不包含文件名)</param>
     27 /// <param name="xmlName">xml文件名</param>
     28 /// <param name="declaration">新建xml的声明(XDeclaration类型)</param>
     29 /// <param name="comment">新建xml的注释(XComment类型)</param>
     30 /// <param name="element">新建xml节点(XElement类型),可多个节点嵌套</param>
     31 public static void creatXML(string xmlPath,string xmlName,XDeclaration declaration,XComment comment,XElement element)
     32 {
     33 //将xml文件夹路径和xml文件名合成完整路径
     34 string path = Path.Combine(xmlPath,xmlName);
     35 //判断文件是否存在
     36 //若存在则返回
     37 //若不存在则按要求新建
     38 if (File.Exists(path))
     39 {
     40 return;
     41 }
     42 else
     43 {
     44 XDocument doc = new XDocument(
     45 declaration,
     46 comment,
     47 element
     48 );
     49 doc.Save(path);
     50 }
     51 }
     52 /// <summary>
     53 /// 创建XML,
     54 /// 首先根据要创建的路径是否有要创建的xml文档,
     55 /// 若有,则不做操作直接返回。
     56 /// 若无,则按要求新建XML文档。
     57 /// 默认version="1.0",encoding="utf-8",standalone="yes"
     58 /// </summary>
     59 /// <param name="xmlPath">xml所在路径(不包含文件名)</param>
     60 /// <param name="xmlName">xml文件名</param>
     61 /// <param name="comment">新建xml的注释(XComment类型)</param>
     62 /// <param name="element">新建xml节点(XElement类型),可多个节点嵌套</param>
     63 public static void creatXML(string xmlPath, string xmlName,XComment comment,XElement element)
     64 {
     65 //将xml文件夹路径和xml文件名合成完整路径
     66 string path = Path.Combine(xmlPath, xmlName);
     67 //判断文件是否存在
     68 //若存在则返回
     69 //若不存在则按要求新建
     70 if (File.Exists(path))
     71 {
     72 return;
     73 }
     74 else
     75 {
     76 XDocument doc = new XDocument(
     77 new XDeclaration("1.0","utf-8","yes"),
     78 comment,
     79 element
     80 );
     81 doc.Save(path);
     82 }
     83 }
     84 
     85 #endregion
     86 
     87 #region 查询XML
     88 /// <summary>
     89 /// 根据节点名称查询
     90 /// </summary>
     91 /// <param name="xmlPath">文件所在位置的路径(包括文件名)</param>
     92 /// <param name="NodeName">所要查询的节点名称</param>
     93 /// <returns>返回所有节点的泛型集合(List类型)</returns>
     94 public static List<XElement> Query(string xmlPath,string NodeName)
     95 {
     96 XElement xel = XElement.Load(xmlPath);
     97 List<XElement> list = new List<XElement>();
     98 var elements = from el in xel.Descendants(NodeName) select el;
     99 foreach (XElement e in elements)
    100 {
    101 list.Add(e);
    102 }
    103 return list;
    104 }
    105 /// <summary>
    106 /// 根据节点名称和属性查询特定节点
    107 /// </summary>
    108 /// <param name="xmlPath">文件所在位置的路径(包括文件名)</param>
    109 /// <param name="NodeName">所要查询的节点名称</param>
    110 /// <param name="ATT">所要查询的节点的属性名称及值KeyValuePair(属性名称,属性值)</param>
    111 /// <returns>返回符合条件的xml元素集合</returns>
    112 public static List<XElement> Query(string xmlPath, string NodeName,KVP ATT)
    113 {
    114 XElement xel = XElement.Load(xmlPath);
    115 List<XElement> list = new List<XElement>();
    116 var elements = from el in xel.Descendants(NodeName)
    117 where el.Attribute(ATT.Key).Value == ATT.Value
    118 select el;
    119 foreach (XElement e in elements)
    120 {
    121 list.Add(e);
    122 }
    123 return list;
    124 }
    125 #endregion
    126 
    127 #region 添加节点
    128 /// <summary>
    129 /// 插入节点
    130 /// </summary>
    131 /// <param name="xmlPath">文件所在位置的路径(包括文件名)</param>
    132 /// <param name="FatherNodeName">所要插入节点的父节点名称</param>
    133 /// <param name="FatherNodeAttribute">所要插入节点的父节点属性名称及值KeyValuePair(属性名称,属性值)</param>
    134 /// <param name="NewNode">要插入的新节点(XElement)</param>
    135 public static void InsertNode(string xmlPath,string FatherNodeName,
    136 KVP FatherNodeAttribute,XElement NewNode)
    137 {
    138 XElement xel = XElement.Load(xmlPath);
    139 var elements = from el in xel.Descendants(FatherNodeName)
    140 where el.Attribute(FatherNodeAttribute.Key).Value == FatherNodeAttribute.Value
    141 select el;
    142 foreach (XElement e in elements)
    143 {
    144 e.Add(NewNode);
    145 }
    146 xel.Save(xmlPath);
    147 }
    148 
    149 #endregion
    150 
    151 #region 修改节点
    152 /// <summary>
    153 /// 修改指定节点的内容
    154 /// </summary>
    155 /// <param name="xmlPath">文件所在位置的路径(包括文件名)</param>
    156 /// <param name="NodeName">要修改的节点名称</param>
    157 /// <param name="ATT">要修改的节点的属性名及值(根据此属性名确定具体要修改哪一个节点)KeyValuePair(属性名称,属性值)</param>
    158 /// <param name="NewAtt">要修改的子元素名称及值KeyValuePair(子元素名,子元素值)</param>
    159 public static void Modify(string xmlPath,string NodeName,KVP ATT,KVP NewAtt)
    160 {
    161 XElement xel = XElement.Load(xmlPath);
    162 var elements = from el in xel.Descendants(NodeName)
    163 where el.Attribute(ATT.Key).Value == ATT.Value
    164 select el;
    165 foreach (XElement e in elements)
    166 {
    167 e.Element(NewAtt.Key).SetValue(NewAtt.Value);
    168 }
    169 xel.Save(xmlPath);
    170 }
    171 #endregion
    172 }
    173 }
  • 相关阅读:
    【HDOJ】2267 How Many People Can Survive
    【HDOJ】2268 How To Use The Car
    【HDOJ】2266 How Many Equations Can You Find
    【POJ】2278 DNA Sequence
    【ZOJ】3430 Detect the Virus
    【HDOJ】2896 病毒侵袭
    求奇数的乘积
    平方和与立方和
    求数列的和
    水仙花数
  • 原文地址:https://www.cnblogs.com/strongZZ/p/4470464.html
Copyright © 2011-2022 走看看