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 }
  • 相关阅读:
    Tuxedo 介绍
    winform如何不卡界面
    银行基金代销系统调研
    如何在wcf中用net tcp协议进行通讯
    20190710用控制台启动一个wcf服务
    wcf必知必会以及与Webapi的区别
    2019年7月第一周总结-RabbitMQ总结
    RabbitMQ入门学习系列(七) 远程调用RPC
    RabbitMQ入门学习系列(六) Exchange的Topic类型
    RabbitMQ入门学习系列(五) Exchange的Direct类型
  • 原文地址:https://www.cnblogs.com/strongZZ/p/4470464.html
Copyright © 2011-2022 走看看