我修改了一下代码。支持一次加载xmldocument,等批量修改完了,再保存xml文档。
支持的操作如下:
-
读取数据
-
创建一个XML文档,成功创建后操作路径将直接指向该文件
-
插入
-
更新
-
删除
-
批量插入
-
批量删除
-
批量更新节点
等等
代码如下:
using
System;
using
System.Linq;
using
System.Xml.Linq;
using
System.Xml;
using
System.Data;
using
System.Configuration;
using
System.Collections.Generic;
/// 这个是用VS2010写的,如果用VS2005,请去掉System.Linq和System.Xml.Linq的引用
/// 可以将此文件直接编译成dll,今后程序只需要引用该dll后开头添加using XmlLibrary;即可。
namespace
CustomLib
{
/// <summary>
/// XmlHelper 的摘要说明
/// </summary>
public
class
XmlHelper
{
private
string
msg;
public
XmlHelper()
{
}
/// <summary>
/// 读取数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// <returns>string</returns>
/**************************************************
* 使用示列:
* XmlHelper.Read(path, "/Node", "")
* XmlHelper.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
************************************************/
public
static
string
Read(
string
path,
string
node,
string
key,
string
value)
{
string
str1 =
""
;
try
{
XmlDocument doc =
new
XmlDocument();
doc.Load(path);
XmlNodeList nodeList = doc.SelectSingleNode(node).ChildNodes;
//获取NewDataSet节点的所有子节点
foreach
(XmlNode xn
in
nodeList)
//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;
//将子节点类型转换为XmlElement类型
if
(xe.GetAttribute(
"key"
) == key)
{
str1 = xe.GetAttribute(value);
continue
;
}
}
return
str1;
}
catch
(Exception ex) {
string
aaa = ex.ToString(); }
return
value;
}
public
static
List<
string
> ReadList(
string
path,
string
node,
string
key,
string
value)
{
string
str1 =
""
;
try
{
XmlDocument doc =
new
XmlDocument();
doc.Load(path);
XmlNodeList nodeList = doc.SelectSingleNode(node).ChildNodes;
//获取NewDataSet节点的所有子节点
List<
string
> list =
new
List<
string
>();
foreach
(XmlNode xn
in
nodeList)
//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;
//将子节点类型转换为XmlElement类型
if
(key.Length > 0)
{
if
(xe.GetAttribute(
"key"
) == key)
{
str1 = xe.GetAttribute(value);
list.Add(str1);
continue
;
}
}
else
{
str1 = xe.GetAttribute(value);
list.Add(str1);
}
}
return
list;
}
catch
(Exception ex) {
string
aaa = ex.ToString(); }
return
new
List<
string
>();
}
/// <summary>
/// 创建一个XML文档,成功创建后操作路径将直接指向该文件
/// </summary>
/// <param name="fileName">文件物理路径名</param>
/// <param name="xmlString">xml字符串</param>
public
static
void
CreateXmlFile(
string
fileName,
string
xmlString)