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 }
时间: 2024-10-10 22:16:42

linq to xml(C#)的相关文章

24.C#LINQ TO XML(十二章12.3)

自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧. LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.Linq命名空间.该命名空间下几乎所有类型都以X为前缀;普通DOM API中的Element对应LINQ TO XML中的XElement.列举下都有哪些类型. XName:表示元素和特性的名称 XNamespace:表示XML的命名空间,通常是一个URL XObject:是XNode和XAttrib

LINQ to XML 编程基础

1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocument() { string path = @"d:\website"; XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XEle

XML读写利器XElement(Linq to xml)

年初公司绩效改革,在等最后通知,不知我有没理解错,感觉新版绩效最高会比原先最高拿到的奖金整整少一半... 还好同时也有调工资,加了一点.去年好像是年中整体调过一次,不知公司是一年调两次还是从今年开始改成年初调. 晚上去加班,处理一个数据交换,本想XML和实体直接互相转换,但XML结构太复杂,自动转换不理想,改用手工处理. 原先其它项目是用原始的XmlDocument,感觉不好用,写法也很不美观 网上说还有种XMLTextReader,像DataReader一样,向前只读的,从来没用过 以前有用过

Linq之Linq to XML

目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将word文档另存为xml文件,这也提供了一种通过操作xml,操作word的一种方式)以及数据库中,都可以看到 XML.而linq to xml提供了一种操作xml更便捷的方式. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 Li

LINQ to XML(1)

LINQ to XML可以两种方式和XML配合使用.第一种方式是作为简化的XML操作API,第二种方式是使用LINQ查询工具.下面我使用的是第二种方式. 主要内容:用LINQ查询语句对XML文件里的数据进行筛选. 此方法优点: 1.我们可以使用单一语句自顶向下创建XML树. 2.我们可以使用包含树的XML文档在内存中创建并操作XML. 3.我们可以不适用Text子节点来创建和操作字符串节点. 4.一个最大的不同(改进)是,在搜索一个XML树时,不需要遍历它.相反只需要查询树并让它返回想要的结果.

LINQ to XML 实战

LINQ to XML 轴定义:创建XML树或将XML文档加载到XML树之后,可以进行查询,从而查找元素并检索它们的值. 两类轴方法:-一些轴就是XELement和XDocument类中返回IEnumerable(T)集合的方法.-另一些轴方法是Extensions类中的扩展方法.实现为扩展方法的轴对集合进行操作,然后返回集合.XContainer是XElement的基类! -常见的轴方法:-XContainer.Elements()返回集合 -XContainer.Descendants()返

Linq To XML 简单操作

加载xml文件和保存xml文件 XDocument doc = XDocument.Load(Server.MapPath("\\xmlfile\\Book.xml")); doc.Save(Server.MapPath("\\xmlfile\\BookBackup.xml")); 创建元素 XElement xe = new XElement("book",new XElement("bookname","asp.

Linq学习随笔二------LINQ to XML

LINQ to XML LINQ to XML provides an in-memory XML programming interface that leverages the .NET Language-Integrated Query (LINQ) Framework. LINQ to XML uses the latest .NET Framework language capabilities and is comparable to an updated, redesigned D

LINQ to XML编程之编程基础

1.声明,LINQ to XML让xml的创建变得非常简单. 1 XDocument myDocument = new XDocument( 2 new XDeclaration("1.0", "utf-8", "yes"), 3 new XElement("Root", "stuff") 4 ); 5 string str = myDocument.Declaration + Environment.Ne

Silverlight 使用IsolatedStorage新建XML文件,并且用LINQ查询XML

代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System; using System.Linq; using System.Windows.Shapes; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO