xml文件net操纵类(c#)
来源:互联网 发布:实对称矩阵的特征向量 编辑:程序博客网 时间:2024/06/14 17:44
1using System;
2using System.Xml;
3using System.Web;
4namespace MX.XML
5{
6 /**//// <summary>
7 /// XML核心类:
8 /// 必需用XPath表达式来获取相应节点
9 /// </summary>
10 public class Core
11 {
12 变量-----------------------------------------------------------#region 变量-----------------------------------------------------------
13 /**//// <summary>
14 /// xml文件所在路径类型
15 /// </summary>
16 /// <remarks>xml文件所在路径类型</remarks>
17 public enum enumXmlPathType
18 {
19 /**//// <summary>
20 /// 绝对路径
21 /// </summary>
22 AbsolutePath,
23 /**//// <summary>
24 /// 虚拟路径
25 /// </summary>
26 VirtualPath
27 }
28
29 private string xmlFilePath;
30 private enumXmlPathType xmlFilePathType;
31 private XmlDocument xmlDoc = new XmlDocument();
32 #endregion
33
34 属性-----------------------------------------------------------#region 属性-----------------------------------------------------------
35 /**//// <summary>
36 /// 文件路径
37 /// </summary>
38 /// <remarks>文件路径</remarks>
39 public string XmlFilePath
40 {
41 get
42 {
43 return this.xmlFilePath;
44 }
45 set
46 {
47 xmlFilePath = value;
48
49 }
50 }
51
52 /**//// <summary>
53 /// 文件路径类型
54 /// </summary>
55 public enumXmlPathType XmlFilePathTyp
56 {
57 set
58 {
59 xmlFilePathType = value;
60 }
61 }
62 #endregion
63
64 构造函数-------------------------------------------------------#region 构造函数-------------------------------------------------------
65 /**//// <summary>
66 /// 构造函数
67 /// </summary>
68 /// <param >文件路径</param>
69 public Core(string tempXmlFilePath)
70 {
71 this.xmlFilePathType = enumXmlPathType.VirtualPath;
72 this.xmlFilePath = tempXmlFilePath;
73 GetXmlDocument();
74 //xmlDoc.Load( xmlFilePath ) ;
75 }
76
77 /**//// <summary>
78 /// 构造函数
79 /// </summary>
80 /// <param >文件路径</param>
81 /// <param >类型</param>
82 public Core(string tempXmlFilePath, enumXmlPathType tempXmlFilePathType)
83 {
84 this.xmlFilePathType = tempXmlFilePathType;
85 this.xmlFilePath = tempXmlFilePath;
86 GetXmlDocument();
87 }
88
89 /**////<summary>
90 ///获取XmlDocument实体类
91 ///</summary>
92 /// <returns>指定的XML描述文件的一个xmldocument实例</returns>
93 private XmlDocument GetXmlDocument()
94 {
95 XmlDocument doc = null;
96
97 if (this.xmlFilePathType == enumXmlPathType.AbsolutePath)
98 {
99 doc = GetXmlDocumentFromFile(xmlFilePath);
100 }
101 else if (this.xmlFilePathType == enumXmlPathType.VirtualPath)
102 {
103 doc = GetXmlDocumentFromFile(HttpContext.Current.Server.MapPath(xmlFilePath));
104 }
105 return doc;
106 }
107
108 private XmlDocument GetXmlDocumentFromFile(string tempXmlFilePath)
109 {
110 string xmlFileFullPath = tempXmlFilePath;
111 xmlDoc.Load(xmlFileFullPath);
112 //定义事件处理
113 xmlDoc.NodeChanged += new XmlNodeChangedEventHandler(this.nodeUpdateEvent);
114 xmlDoc.NodeInserted += new XmlNodeChangedEventHandler(this.nodeInsertEvent);
115 xmlDoc.NodeRemoved += new XmlNodeChangedEventHandler(this.nodeDeleteEvent);
116 return xmlDoc;
117 }
118
119 #endregion
120
121 获取所有指定名称的节点#region 获取所有指定名称的节点
122 /**//// <summary>
123 /// 功能:
124 /// 获取所有指定名称的节点(XmlNodeList)
125 /// </summary>
126 /// <param >节点名称</param>
127 public XmlNodeList GetXmlNodeList(string strNode)
128 {
129 XmlNodeList strReturn = null;
130 try
131 {
132 //根据指定路径获取节点
133 XmlNodeList xmlNode = xmlDoc.SelectNodes(strNode);
134 if (!(xmlNode == null))
135 {
136 strReturn = xmlNode;
137 }
138 }
139 catch (XmlException xmle)
140 {
141 throw xmle;
142 }
143 return strReturn;
144 }
145 #endregion
146
147 读取指定节点的指定属性值---------------------------------------#region 读取指定节点的指定属性值---------------------------------------
148 /**//// <summary>
149 /// 功能:
150 /// 读取指定节点的指定属性值(Value)
151 /// </summary>
152 /// <param >节点名称</param>
153 /// <param >此节点的属性</param>
154 /// <returns></returns>
155 public string GetXmlNodeAttributeValue(string strNode, string strAttribute)
156 {
157 string strReturn = "";
158 try
159 {
160 //根据指定路径获取节点
161 XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
162 if (!(xmlNode == null))
163 {
164 strReturn = xmlNode.Attributes.GetNamedItem(strAttribute).Value;
165
166 /**/////获取节点的属性,并循环取出需要的属性值
167 //XmlAttributeCollection xmlAttr = xmlNode.Attributes;
168 //for (int i = 0; i < xmlAttr.Count; i++)
169 //{
170 // if (xmlAttr.Item(i).Name == strAttribute)
171 // {
172 // strReturn = xmlAttr.Item(i).Value;
173 // break;
174 // }
175 //}
176 }
177 }
178 catch (XmlException xmle)
179 {
180 throw xmle;
181 }
182 return strReturn;
183 }
184 #endregion
185
186 读取指定节点的值-----------------------------------------------#region 读取指定节点的值-----------------------------------------------
187 /**//// <summary>
188 /// 功能:
189 /// 读取指定节点的值(InnerText)
190 /// </summary>
191 /// <param >节点名称</param>
192 /// <returns></returns>
193 public string GetXmlNodeValue(string strNode)
194 {
195 string strReturn = String.Empty;
196 try
197 {
198 //根据路径获取节点
199 XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
200 if (!(xmlNode == null))
201 strReturn = xmlNode.InnerText;
202 }
203 catch (XmlException xmle)
204 {
205 throw xmle;
206 }
207 return strReturn;
208 }
209 #endregion
210
211 设置节点值-----------------------------------------------------#region 设置节点值-----------------------------------------------------
212 /**//// <summary>
213 /// 功能:
214 /// 设置节点值(InnerText)
215 /// </summary>
216 /// <param >节点的名称</param>
217 /// <param >节点值</param>
218 public void SetXmlNodeValue(string xmlNodePath, string xmlNodeValue)
219 {
220 try
221 {
222 //可以批量为符合条件的节点进行付值
223 XmlNodeList xmlNode = this.xmlDoc.SelectNodes(xmlNodePath);
224 if (!(xmlNode == null))
225 {
226 foreach (XmlNode xn in xmlNode)
227 {
228 xn.InnerText = xmlNodeValue;
229 }
230 }
231 /**//**/
232 /**//*
233 * 根据指定路径获取节点
234 XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath) ;
235 //设置节点值
236 if (!(xmlNode==null))
237 xmlNode.InnerText = xmlNodeValue ;*/
238 }
239 catch (XmlException xmle)
240 {
241 throw xmle;
242 }
243 }
244 #endregion
245
246 设置节点的属性值-----------------------------------------------#region 设置节点的属性值-----------------------------------------------
247 /**//// <summary>
248 /// 功能:
249 /// 设置节点的属性值
250 /// </summary>
251 /// <param >节点名称</param>
252 /// <param >属性名称</param>
253 /// <param >属性值</param>
254 public void SetXmlNodeAttributeValue(string xmlNodePath, string xmlNodeAttribute, string xmlNodeAttributeValue)
255 {
256 try
257 {
258 //可以批量为符合条件的节点的属性付值
259 XmlNodeList xmlNode = this.xmlDoc.SelectNodes(xmlNodePath);
260 if (!(xmlNode == null))
261 {
262 foreach (XmlNode xn in xmlNode)
263 {
264 XmlAttributeCollection xmlAttr = xn.Attributes;
265 for (int i = 0; i < xmlAttr.Count; i++)
266 {
267 if (xmlAttr.Item(i).Name == xmlNodeAttribute)
268 {
269 xmlAttr.Item(i).Value = xmlNodeAttributeValue;
270 break;
271 }
272 }
273 }
274 }
275 }
276 catch (XmlException xmle)
277 {
278 throw xmle;
279 }
280 }
281 #endregion
282
283 添加-----------------------------------------------------------#region 添加-----------------------------------------------------------
284 /**//// <summary>
285 /// 获取XML文件的根元素
286 /// </summary>
287 public XmlNode GetXmlRoot()
288 {
289 return xmlDoc.DocumentElement;
290 }
291
292 /**//// <summary>
293 /// 在根节点下添加父节点
294 /// </summary>
295 public void AddParentNode(string parentNode)
296 {
297 try
298 {
299 XmlNode root = GetXmlRoot();
300 XmlNode parentXmlNode = xmlDoc.CreateElement(parentNode);
301 root.AppendChild(parentXmlNode);
302 }
303 catch (XmlException xmle)
304 {
305 throw xmle;
306 }
307 }
308
309 /**//// <summary>
310 /// 向一个已经存在的父节点中插入一个子节点,并返回子节点.
311 /// </summary>
312 /// <param >父节点</param>
313 /// <param >字节点名称</param>
314 public XmlNode AddChildNode(string parentNodePath, string childnodename)
315 {
316 XmlNode childXmlNode = null;
317 try
318 {
319 XmlNode parentXmlNode = xmlDoc.SelectSingleNode(parentNodePath);
320 if (!((parentXmlNode) == null))//如果此节点存在
321 {
322 childXmlNode = xmlDoc.CreateElement(childnodename);
323 parentXmlNode.AppendChild(childXmlNode);
324 }
325 else
326 {//如果不存在就放父节点添加
327 this.GetXmlRoot().AppendChild(childXmlNode);
328 }
329 }
330 catch (XmlException xmle)
331 {
332 throw xmle;
333 }
334 return childXmlNode;
335 }
336 /**//// <summary>
337 /// 向一个已经存在的父节点中插入一个子节点,并添加一个属性
338 /// </summary>
339 public void AddChildNode(string parentNodePath, string childnodename, string NodeAttribute, string NodeAttributeValue)
340 {
341 try
342 {
343 XmlNode parentXmlNode = xmlDoc.SelectSingleNode(parentNodePath);
344 XmlNode childXmlNode = null;
345 if (!((parentXmlNode) == null))//如果此节点存在
346 {
347 childXmlNode = xmlDoc.CreateElement(childnodename);
348
349 //添加属性
350 XmlAttribute nodeAttribute = this.xmlDoc.CreateAttribute(NodeAttribute);
351 nodeAttribute.Value = NodeAttributeValue;
352 childXmlNode.Attributes.Append(nodeAttribute);
353
354 parentXmlNode.AppendChild(childXmlNode);
355 }
356 else
357 {//如果不存在就放父节点添加
358 this.GetXmlRoot().AppendChild(childXmlNode);
359 }
360 }
361 catch (XmlException xmle)
362 {
363 throw xmle;
364 }
365 }
366
367 /**//// <summary>
368 /// 向一个节点添加属性,值为空
369 /// </summary>
370 /// <param >节点路径</param>
371 /// <param >属性名</param>
372 public void AddAttribute(string NodePath, string NodeAttribute)
373 {
374 privateAddAttribute(NodePath, NodeAttribute, "");
375 }
376 /**//// <summary>
377 /// 向一个节点添加属性,并赋值***
378 /// </summary>
379 public void AddAttribute(XmlNode childXmlNode, string NodeAttribute, string NodeAttributeValue)
380 {
381 XmlAttribute nodeAttribute = this.xmlDoc.CreateAttribute(NodeAttribute);
382 nodeAttribute.Value = NodeAttributeValue;
383 childXmlNode.Attributes.Append(nodeAttribute);
384 }
385
386 /**//// <summary>
387 /// 向一个节点添加属性
388 /// </summary>
389 /// <param >节点路径</param>
390 /// <param >属性名</param>
391 /// <param >属性值</param>
392 private void privateAddAttribute(string NodePath, string NodeAttribute, string NodeAttributeValue)
393 {
394 try
395 {
396 XmlNode nodePath = xmlDoc.SelectSingleNode(NodePath);
397 if (!(nodePath == null))
398 {
399 XmlAttribute nodeAttribute = this.xmlDoc.CreateAttribute(NodeAttribute);
400 nodeAttribute.Value = NodeAttributeValue;
401 nodePath.Attributes.Append(nodeAttribute);
402 }
403 }
404 catch (XmlException xmle)
405 {
406 throw xmle;
407 }
408 }
409 /**//// <summary>
410 /// 向一个节点添加属性,并赋值
411 /// </summary>
412 /// <param >节点</param>
413 /// <param >属性名</param>
414 /// <param >属性值</param>
415 public void AddAttribute(string NodePath, string NodeAttribute, string NodeAttributeValue)
416 {
417 privateAddAttribute(NodePath, NodeAttribute, NodeAttributeValue);
418 }
419 #endregion
420
421 删除-----------------------------------------------------------#region 删除-----------------------------------------------------------
422 /**//// <summary>
423 /// 删除节点的一个属性
424 /// </summary>
425 /// <param >节点所在的xpath表达式</param>
426 /// <param >属性名</param>
427 public void DeleteAttribute(string NodePath, string NodeAttribute)
428 {
429 XmlNodeList nodePath = this.xmlDoc.SelectNodes(NodePath);
430 if (!(nodePath == null))
431 {
432 foreach (XmlNode tempxn in nodePath)
433 {
434 XmlAttributeCollection xmlAttr = tempxn.Attributes;
435 for (int i = 0; i < xmlAttr.Count; i++)
436 {
437 if (xmlAttr.Item(i).Name == NodeAttribute)
438 {
439 tempxn.Attributes.RemoveAt(i);
440 break;
441 }
442 }
443 }
444 }
445 }
446
447 /**//// <summary>
448 /// 删除节点的一个属性,当其属性值等于给定的值时
449 /// </summary>
450 /// <param >节点所在的xpath表达式</param>
451 /// <param >属性</param>
452 /// <param >值</param>
453 public void DeleteAttribute(string NodePath, string NodeAttribute, string NodeAttributeValue)
454 {
455 XmlNodeList nodePath = this.xmlDoc.SelectNodes(NodePath);
456 if (!(nodePath == null))
457 {
458 foreach (XmlNode tempxn in nodePath)
459 {
460 XmlAttributeCollection xmlAttr = tempxn.Attributes;
461 for (int i = 0; i < xmlAttr.Count; i++)
462 {
463 if (xmlAttr.Item(i).Name == NodeAttribute && xmlAttr.Item(i).Value == NodeAttributeValue)
464 {
465 tempxn.Attributes.RemoveAt(i);
466 break;
467 }
468 }
469 }
470 }
471 }
472 /**//// <summary>
473 /// 删除节点
474 /// </summary>
475 /// <param ></param>
476 /// <remarks></remarks>
477 public void DeleteXmlNode(string tempXmlNode)
478 {
479 XmlNodeList nodePath = this.xmlDoc.SelectNodes(tempXmlNode);
480 if (!(nodePath == null))
481 {
482 foreach (XmlNode xn in nodePath)
483 {
484 xn.ParentNode.RemoveChild(xn);
485 }
486 }
487 }
488
489 #endregion
490
491 XML文档事件----------------------------------------------------#region XML文档事件----------------------------------------------------
492 /**//// <summary>
493 /// 节点插入事件
494 /// </summary>
495 /// <param ></param>
496 /// <param ></param>
497 private void nodeInsertEvent(Object src, XmlNodeChangedEventArgs args)
498 {
499 //保存设置
500 SaveXmlDocument();
501 }
502 /**//// <summary>
503 /// 节点删除事件
504 /// </summary>
505 /// <param ></param>
506 /// <param ></param>
507 private void nodeDeleteEvent(Object src, XmlNodeChangedEventArgs args)
508 {
509 //保存设置
510 SaveXmlDocument();
511 }
512 /**//// <summary>
513 /// 节点更新事件
514 /// </summary>
515 /// <param ></param>
516 /// <param ></param>
517 private void nodeUpdateEvent(Object src, XmlNodeChangedEventArgs args)
518 {
519 //保存设置
520 SaveXmlDocument();
521 }
522 #endregion
523
524 保存XML文件----------------------------------------------------#region 保存XML文件----------------------------------------------------
525 /**//// <summary>
526 /// 功能:
527 /// 保存XML文件
528 /// </summary>
529 public void SaveXmlDocument()
530 {
531 try
532 {
533 //保存设置的结果
534 if (this.xmlFilePathType == enumXmlPathType.AbsolutePath)
535 {
536 Savexml(xmlFilePath);
537 }
538 else if (this.xmlFilePathType == enumXmlPathType.VirtualPath)
539 {
540 Savexml(HttpContext.Current.Server.MapPath(xmlFilePath));
541 }
542 }
543 catch (XmlException xmle)
544 {
545 throw xmle;
546 }
547 }
548
549 /**//// <summary>
550 /// 功能:
551 /// 保存XML文件
552 /// </summary>
553 public void SaveXmlDocument(string tempXMLFilePath)
554 {
555 try
556 {
557 //保存设置的结果
558 Savexml(tempXMLFilePath);
559 }
560 catch (XmlException xmle)
561 {
562 throw xmle;
563 }
564 }
565 /**//// <summary>
566 ///
567 /// </summary>
568 /// <param ></param>
569 private void Savexml(string filepath)
570 {
571 xmlDoc.Save(filepath);
572 }
573
574 #endregion
575
576 }
577
578}
579
文章来源于 http://www.cnblogs.com/wf225 版权归原作者所有
2using System.Xml;
3using System.Web;
4namespace MX.XML
5{
6 /**//// <summary>
7 /// XML核心类:
8 /// 必需用XPath表达式来获取相应节点
9 /// </summary>
10 public class Core
11 {
12 变量-----------------------------------------------------------#region 变量-----------------------------------------------------------
13 /**//// <summary>
14 /// xml文件所在路径类型
15 /// </summary>
16 /// <remarks>xml文件所在路径类型</remarks>
17 public enum enumXmlPathType
18 {
19 /**//// <summary>
20 /// 绝对路径
21 /// </summary>
22 AbsolutePath,
23 /**//// <summary>
24 /// 虚拟路径
25 /// </summary>
26 VirtualPath
27 }
28
29 private string xmlFilePath;
30 private enumXmlPathType xmlFilePathType;
31 private XmlDocument xmlDoc = new XmlDocument();
32 #endregion
33
34 属性-----------------------------------------------------------#region 属性-----------------------------------------------------------
35 /**//// <summary>
36 /// 文件路径
37 /// </summary>
38 /// <remarks>文件路径</remarks>
39 public string XmlFilePath
40 {
41 get
42 {
43 return this.xmlFilePath;
44 }
45 set
46 {
47 xmlFilePath = value;
48
49 }
50 }
51
52 /**//// <summary>
53 /// 文件路径类型
54 /// </summary>
55 public enumXmlPathType XmlFilePathTyp
56 {
57 set
58 {
59 xmlFilePathType = value;
60 }
61 }
62 #endregion
63
64 构造函数-------------------------------------------------------#region 构造函数-------------------------------------------------------
65 /**//// <summary>
66 /// 构造函数
67 /// </summary>
68 /// <param >文件路径</param>
69 public Core(string tempXmlFilePath)
70 {
71 this.xmlFilePathType = enumXmlPathType.VirtualPath;
72 this.xmlFilePath = tempXmlFilePath;
73 GetXmlDocument();
74 //xmlDoc.Load( xmlFilePath ) ;
75 }
76
77 /**//// <summary>
78 /// 构造函数
79 /// </summary>
80 /// <param >文件路径</param>
81 /// <param >类型</param>
82 public Core(string tempXmlFilePath, enumXmlPathType tempXmlFilePathType)
83 {
84 this.xmlFilePathType = tempXmlFilePathType;
85 this.xmlFilePath = tempXmlFilePath;
86 GetXmlDocument();
87 }
88
89 /**////<summary>
90 ///获取XmlDocument实体类
91 ///</summary>
92 /// <returns>指定的XML描述文件的一个xmldocument实例</returns>
93 private XmlDocument GetXmlDocument()
94 {
95 XmlDocument doc = null;
96
97 if (this.xmlFilePathType == enumXmlPathType.AbsolutePath)
98 {
99 doc = GetXmlDocumentFromFile(xmlFilePath);
100 }
101 else if (this.xmlFilePathType == enumXmlPathType.VirtualPath)
102 {
103 doc = GetXmlDocumentFromFile(HttpContext.Current.Server.MapPath(xmlFilePath));
104 }
105 return doc;
106 }
107
108 private XmlDocument GetXmlDocumentFromFile(string tempXmlFilePath)
109 {
110 string xmlFileFullPath = tempXmlFilePath;
111 xmlDoc.Load(xmlFileFullPath);
112 //定义事件处理
113 xmlDoc.NodeChanged += new XmlNodeChangedEventHandler(this.nodeUpdateEvent);
114 xmlDoc.NodeInserted += new XmlNodeChangedEventHandler(this.nodeInsertEvent);
115 xmlDoc.NodeRemoved += new XmlNodeChangedEventHandler(this.nodeDeleteEvent);
116 return xmlDoc;
117 }
118
119 #endregion
120
121 获取所有指定名称的节点#region 获取所有指定名称的节点
122 /**//// <summary>
123 /// 功能:
124 /// 获取所有指定名称的节点(XmlNodeList)
125 /// </summary>
126 /// <param >节点名称</param>
127 public XmlNodeList GetXmlNodeList(string strNode)
128 {
129 XmlNodeList strReturn = null;
130 try
131 {
132 //根据指定路径获取节点
133 XmlNodeList xmlNode = xmlDoc.SelectNodes(strNode);
134 if (!(xmlNode == null))
135 {
136 strReturn = xmlNode;
137 }
138 }
139 catch (XmlException xmle)
140 {
141 throw xmle;
142 }
143 return strReturn;
144 }
145 #endregion
146
147 读取指定节点的指定属性值---------------------------------------#region 读取指定节点的指定属性值---------------------------------------
148 /**//// <summary>
149 /// 功能:
150 /// 读取指定节点的指定属性值(Value)
151 /// </summary>
152 /// <param >节点名称</param>
153 /// <param >此节点的属性</param>
154 /// <returns></returns>
155 public string GetXmlNodeAttributeValue(string strNode, string strAttribute)
156 {
157 string strReturn = "";
158 try
159 {
160 //根据指定路径获取节点
161 XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
162 if (!(xmlNode == null))
163 {
164 strReturn = xmlNode.Attributes.GetNamedItem(strAttribute).Value;
165
166 /**/////获取节点的属性,并循环取出需要的属性值
167 //XmlAttributeCollection xmlAttr = xmlNode.Attributes;
168 //for (int i = 0; i < xmlAttr.Count; i++)
169 //{
170 // if (xmlAttr.Item(i).Name == strAttribute)
171 // {
172 // strReturn = xmlAttr.Item(i).Value;
173 // break;
174 // }
175 //}
176 }
177 }
178 catch (XmlException xmle)
179 {
180 throw xmle;
181 }
182 return strReturn;
183 }
184 #endregion
185
186 读取指定节点的值-----------------------------------------------#region 读取指定节点的值-----------------------------------------------
187 /**//// <summary>
188 /// 功能:
189 /// 读取指定节点的值(InnerText)
190 /// </summary>
191 /// <param >节点名称</param>
192 /// <returns></returns>
193 public string GetXmlNodeValue(string strNode)
194 {
195 string strReturn = String.Empty;
196 try
197 {
198 //根据路径获取节点
199 XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
200 if (!(xmlNode == null))
201 strReturn = xmlNode.InnerText;
202 }
203 catch (XmlException xmle)
204 {
205 throw xmle;
206 }
207 return strReturn;
208 }
209 #endregion
210
211 设置节点值-----------------------------------------------------#region 设置节点值-----------------------------------------------------
212 /**//// <summary>
213 /// 功能:
214 /// 设置节点值(InnerText)
215 /// </summary>
216 /// <param >节点的名称</param>
217 /// <param >节点值</param>
218 public void SetXmlNodeValue(string xmlNodePath, string xmlNodeValue)
219 {
220 try
221 {
222 //可以批量为符合条件的节点进行付值
223 XmlNodeList xmlNode = this.xmlDoc.SelectNodes(xmlNodePath);
224 if (!(xmlNode == null))
225 {
226 foreach (XmlNode xn in xmlNode)
227 {
228 xn.InnerText = xmlNodeValue;
229 }
230 }
231 /**//**/
232 /**//*
233 * 根据指定路径获取节点
234 XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath) ;
235 //设置节点值
236 if (!(xmlNode==null))
237 xmlNode.InnerText = xmlNodeValue ;*/
238 }
239 catch (XmlException xmle)
240 {
241 throw xmle;
242 }
243 }
244 #endregion
245
246 设置节点的属性值-----------------------------------------------#region 设置节点的属性值-----------------------------------------------
247 /**//// <summary>
248 /// 功能:
249 /// 设置节点的属性值
250 /// </summary>
251 /// <param >节点名称</param>
252 /// <param >属性名称</param>
253 /// <param >属性值</param>
254 public void SetXmlNodeAttributeValue(string xmlNodePath, string xmlNodeAttribute, string xmlNodeAttributeValue)
255 {
256 try
257 {
258 //可以批量为符合条件的节点的属性付值
259 XmlNodeList xmlNode = this.xmlDoc.SelectNodes(xmlNodePath);
260 if (!(xmlNode == null))
261 {
262 foreach (XmlNode xn in xmlNode)
263 {
264 XmlAttributeCollection xmlAttr = xn.Attributes;
265 for (int i = 0; i < xmlAttr.Count; i++)
266 {
267 if (xmlAttr.Item(i).Name == xmlNodeAttribute)
268 {
269 xmlAttr.Item(i).Value = xmlNodeAttributeValue;
270 break;
271 }
272 }
273 }
274 }
275 }
276 catch (XmlException xmle)
277 {
278 throw xmle;
279 }
280 }
281 #endregion
282
283 添加-----------------------------------------------------------#region 添加-----------------------------------------------------------
284 /**//// <summary>
285 /// 获取XML文件的根元素
286 /// </summary>
287 public XmlNode GetXmlRoot()
288 {
289 return xmlDoc.DocumentElement;
290 }
291
292 /**//// <summary>
293 /// 在根节点下添加父节点
294 /// </summary>
295 public void AddParentNode(string parentNode)
296 {
297 try
298 {
299 XmlNode root = GetXmlRoot();
300 XmlNode parentXmlNode = xmlDoc.CreateElement(parentNode);
301 root.AppendChild(parentXmlNode);
302 }
303 catch (XmlException xmle)
304 {
305 throw xmle;
306 }
307 }
308
309 /**//// <summary>
310 /// 向一个已经存在的父节点中插入一个子节点,并返回子节点.
311 /// </summary>
312 /// <param >父节点</param>
313 /// <param >字节点名称</param>
314 public XmlNode AddChildNode(string parentNodePath, string childnodename)
315 {
316 XmlNode childXmlNode = null;
317 try
318 {
319 XmlNode parentXmlNode = xmlDoc.SelectSingleNode(parentNodePath);
320 if (!((parentXmlNode) == null))//如果此节点存在
321 {
322 childXmlNode = xmlDoc.CreateElement(childnodename);
323 parentXmlNode.AppendChild(childXmlNode);
324 }
325 else
326 {//如果不存在就放父节点添加
327 this.GetXmlRoot().AppendChild(childXmlNode);
328 }
329 }
330 catch (XmlException xmle)
331 {
332 throw xmle;
333 }
334 return childXmlNode;
335 }
336 /**//// <summary>
337 /// 向一个已经存在的父节点中插入一个子节点,并添加一个属性
338 /// </summary>
339 public void AddChildNode(string parentNodePath, string childnodename, string NodeAttribute, string NodeAttributeValue)
340 {
341 try
342 {
343 XmlNode parentXmlNode = xmlDoc.SelectSingleNode(parentNodePath);
344 XmlNode childXmlNode = null;
345 if (!((parentXmlNode) == null))//如果此节点存在
346 {
347 childXmlNode = xmlDoc.CreateElement(childnodename);
348
349 //添加属性
350 XmlAttribute nodeAttribute = this.xmlDoc.CreateAttribute(NodeAttribute);
351 nodeAttribute.Value = NodeAttributeValue;
352 childXmlNode.Attributes.Append(nodeAttribute);
353
354 parentXmlNode.AppendChild(childXmlNode);
355 }
356 else
357 {//如果不存在就放父节点添加
358 this.GetXmlRoot().AppendChild(childXmlNode);
359 }
360 }
361 catch (XmlException xmle)
362 {
363 throw xmle;
364 }
365 }
366
367 /**//// <summary>
368 /// 向一个节点添加属性,值为空
369 /// </summary>
370 /// <param >节点路径</param>
371 /// <param >属性名</param>
372 public void AddAttribute(string NodePath, string NodeAttribute)
373 {
374 privateAddAttribute(NodePath, NodeAttribute, "");
375 }
376 /**//// <summary>
377 /// 向一个节点添加属性,并赋值***
378 /// </summary>
379 public void AddAttribute(XmlNode childXmlNode, string NodeAttribute, string NodeAttributeValue)
380 {
381 XmlAttribute nodeAttribute = this.xmlDoc.CreateAttribute(NodeAttribute);
382 nodeAttribute.Value = NodeAttributeValue;
383 childXmlNode.Attributes.Append(nodeAttribute);
384 }
385
386 /**//// <summary>
387 /// 向一个节点添加属性
388 /// </summary>
389 /// <param >节点路径</param>
390 /// <param >属性名</param>
391 /// <param >属性值</param>
392 private void privateAddAttribute(string NodePath, string NodeAttribute, string NodeAttributeValue)
393 {
394 try
395 {
396 XmlNode nodePath = xmlDoc.SelectSingleNode(NodePath);
397 if (!(nodePath == null))
398 {
399 XmlAttribute nodeAttribute = this.xmlDoc.CreateAttribute(NodeAttribute);
400 nodeAttribute.Value = NodeAttributeValue;
401 nodePath.Attributes.Append(nodeAttribute);
402 }
403 }
404 catch (XmlException xmle)
405 {
406 throw xmle;
407 }
408 }
409 /**//// <summary>
410 /// 向一个节点添加属性,并赋值
411 /// </summary>
412 /// <param >节点</param>
413 /// <param >属性名</param>
414 /// <param >属性值</param>
415 public void AddAttribute(string NodePath, string NodeAttribute, string NodeAttributeValue)
416 {
417 privateAddAttribute(NodePath, NodeAttribute, NodeAttributeValue);
418 }
419 #endregion
420
421 删除-----------------------------------------------------------#region 删除-----------------------------------------------------------
422 /**//// <summary>
423 /// 删除节点的一个属性
424 /// </summary>
425 /// <param >节点所在的xpath表达式</param>
426 /// <param >属性名</param>
427 public void DeleteAttribute(string NodePath, string NodeAttribute)
428 {
429 XmlNodeList nodePath = this.xmlDoc.SelectNodes(NodePath);
430 if (!(nodePath == null))
431 {
432 foreach (XmlNode tempxn in nodePath)
433 {
434 XmlAttributeCollection xmlAttr = tempxn.Attributes;
435 for (int i = 0; i < xmlAttr.Count; i++)
436 {
437 if (xmlAttr.Item(i).Name == NodeAttribute)
438 {
439 tempxn.Attributes.RemoveAt(i);
440 break;
441 }
442 }
443 }
444 }
445 }
446
447 /**//// <summary>
448 /// 删除节点的一个属性,当其属性值等于给定的值时
449 /// </summary>
450 /// <param >节点所在的xpath表达式</param>
451 /// <param >属性</param>
452 /// <param >值</param>
453 public void DeleteAttribute(string NodePath, string NodeAttribute, string NodeAttributeValue)
454 {
455 XmlNodeList nodePath = this.xmlDoc.SelectNodes(NodePath);
456 if (!(nodePath == null))
457 {
458 foreach (XmlNode tempxn in nodePath)
459 {
460 XmlAttributeCollection xmlAttr = tempxn.Attributes;
461 for (int i = 0; i < xmlAttr.Count; i++)
462 {
463 if (xmlAttr.Item(i).Name == NodeAttribute && xmlAttr.Item(i).Value == NodeAttributeValue)
464 {
465 tempxn.Attributes.RemoveAt(i);
466 break;
467 }
468 }
469 }
470 }
471 }
472 /**//// <summary>
473 /// 删除节点
474 /// </summary>
475 /// <param ></param>
476 /// <remarks></remarks>
477 public void DeleteXmlNode(string tempXmlNode)
478 {
479 XmlNodeList nodePath = this.xmlDoc.SelectNodes(tempXmlNode);
480 if (!(nodePath == null))
481 {
482 foreach (XmlNode xn in nodePath)
483 {
484 xn.ParentNode.RemoveChild(xn);
485 }
486 }
487 }
488
489 #endregion
490
491 XML文档事件----------------------------------------------------#region XML文档事件----------------------------------------------------
492 /**//// <summary>
493 /// 节点插入事件
494 /// </summary>
495 /// <param ></param>
496 /// <param ></param>
497 private void nodeInsertEvent(Object src, XmlNodeChangedEventArgs args)
498 {
499 //保存设置
500 SaveXmlDocument();
501 }
502 /**//// <summary>
503 /// 节点删除事件
504 /// </summary>
505 /// <param ></param>
506 /// <param ></param>
507 private void nodeDeleteEvent(Object src, XmlNodeChangedEventArgs args)
508 {
509 //保存设置
510 SaveXmlDocument();
511 }
512 /**//// <summary>
513 /// 节点更新事件
514 /// </summary>
515 /// <param ></param>
516 /// <param ></param>
517 private void nodeUpdateEvent(Object src, XmlNodeChangedEventArgs args)
518 {
519 //保存设置
520 SaveXmlDocument();
521 }
522 #endregion
523
524 保存XML文件----------------------------------------------------#region 保存XML文件----------------------------------------------------
525 /**//// <summary>
526 /// 功能:
527 /// 保存XML文件
528 /// </summary>
529 public void SaveXmlDocument()
530 {
531 try
532 {
533 //保存设置的结果
534 if (this.xmlFilePathType == enumXmlPathType.AbsolutePath)
535 {
536 Savexml(xmlFilePath);
537 }
538 else if (this.xmlFilePathType == enumXmlPathType.VirtualPath)
539 {
540 Savexml(HttpContext.Current.Server.MapPath(xmlFilePath));
541 }
542 }
543 catch (XmlException xmle)
544 {
545 throw xmle;
546 }
547 }
548
549 /**//// <summary>
550 /// 功能:
551 /// 保存XML文件
552 /// </summary>
553 public void SaveXmlDocument(string tempXMLFilePath)
554 {
555 try
556 {
557 //保存设置的结果
558 Savexml(tempXMLFilePath);
559 }
560 catch (XmlException xmle)
561 {
562 throw xmle;
563 }
564 }
565 /**//// <summary>
566 ///
567 /// </summary>
568 /// <param ></param>
569 private void Savexml(string filepath)
570 {
571 xmlDoc.Save(filepath);
572 }
573
574 #endregion
575
576 }
577
578}
579
文章来源于 http://www.cnblogs.com/wf225 版权归原作者所有
- .net操纵xml文件类(c#)
- .net操纵xml文件类(c#)1
- .net操纵xml文件类(c#)2
- .net操纵xml文件类(c#)3
- .net操纵xml文件类(c#)4
- .net操纵xml文件类(c#)5
- xml文件net操纵类(c#)
- xml文件net操纵类(c#)
- c#操纵xml文件类
- 操纵XML文件
- 操纵XML文件
- c#中操纵XML文件
- c#中操纵XML文件
- ASP操纵XML类
- C#.net对XML文件类封装:
- C#.net读写XML文件
- C#.net读写XML文件
- c#.net创建xml文件
- Menu+MultiView 实现Tab(不使用图片)
- 只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called during Render()
- 甘特图终极版本无锋不起浪 -
- 带农历的日历
- 将js文件编译成动态链接库(dll)文件
- xml文件net操纵类(c#)
- 文件创建及读取的方法
- windows 2003安全配置(SWC)无法完成解答
- 报名表
- 中国CRM供应商的4Ps分析
- 老兄,你的进度表
- 任务太多?学着突破重围
- 通用电气医疗集团(GE Healthcare)实习生岗位
- 【全面解析DeepZoom 之三】建立DeepZoom应用
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
花呗登录不了怎么办
花呗关了开不了怎么办
开通不了花呗怎么办
花呗存在嫌疑怎么办
花呗登陆不了怎么办
支付宝花呗开通不了怎么办
花呗不可以用了怎么办
餐饮新店没人气怎么办
实体店没有生意怎么办
新店开业生意不好怎么办
壁纸店没有生意怎么办?
开业第一天人少怎么办
开业第一天没人怎么办
被辞退心里难受怎么办
幼犬脚受伤了怎么办
脚掌发硬发干怎么办?
狗舔了伤口怎么办
工地打工不给钱怎么办
转运珠破了怎么办
凉鞋鞋扣老是掉怎么办
凉鞋扣子总是掉怎么办
水泥制品厂怎么办环评
深色木地板显脏怎么办
地板深了怎么办啊?
墙漆掉在家具上怎么办
皮质鞋子染色了怎么办
腹部抽脂后左右不对称怎么办
文化自信我们该怎么办
法庭把案子拖着怎么办
高中分班考差了怎么办
探索者软件打不开了怎么办
蔗阳伞没有底座怎么办
大伞没有底座怎么办
母乳过敏的湿疹怎么办
孩子对母乳过敏怎么办
cad图分解不了怎么办
衣柜宽出墙体怎么办
楼层大门锁住了怎么办
黄牛流口水烂嘴巴怎么办
长的小气不成熟怎么办
如果卵泡长不成熟怎么办