一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点
转自:http://www.360doc.com/content/13/0905/20/1944636_312482651.shtml
public
class
@H_301_22@XmlHelper
public
@H_301_22@XmlHelper()
public
enum
@H_301_22@XmlType
/// <summary>
/// 创建XML文档
/// </summary>
/// <param name="name">根节点名称</param>
/// <param name="type">根节点的一个属性值</param>
/// <returns></returns>
/// document = XmlOperate.CreateXmlDocument("sex","sexy");
/// document.Save("c:/bookstore.xml");
public
static
@H_301_22@XmlDocument CreateXmlDocument( string
@H_301_22@name,string
@H_301_22@type )
@H_301_22@XmlDocument doc = null
@H_301_22@;
@H_301_22@XmlElement rootEle = null
@H_301_22@;
try
@H_301_22@doc = new
@H_301_22@XmlDocument();
@H_301_22@doc.LoadXml( "<"
@H_301_22@+ name + "/>"
@H_301_22@);
@H_301_22@rootEle = doc.DocumentElement;
@H_301_22@rootEle.SetAttribute( "type"
@H_301_22@,type );
catch
@H_301_22@(Exception er)
/// <summary>
/// 读取数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// <returns>string</returns>
public
static
string
@H_301_22@Read( string
@H_301_22@path,string
@H_301_22@node,string
@H_301_22@attribute )
string
@H_301_22@value = ""
@H_301_22@;
try
@H_301_22@XmlDocument doc = new
@H_301_22@XmlDocument();
@H_301_22@doc.Load( path );
@H_301_22@XmlNode xn = doc.SelectSingleNode( node );
@H_301_22@value = (attribute.Equals( ""
@H_301_22@) ? xn.InnerText : xn.Attributes[attribute].Value);
/// <summary>
/// 插入数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param>
/// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param>
/// <param name="value">值</param>
/// <returns></returns>
public
static
void
@H_301_22@Insert( string
@H_301_22@path,string
@H_301_22@element,string
@H_301_22@attribute,string
@H_301_22@value )
try
@H_301_22@XmlDocument doc = new
@H_301_22@XmlDocument();
@H_301_22@doc.Load( path );
@H_301_22@XmlNode xn = doc.SelectSingleNode( node );
if
@H_301_22@(element.Equals( ""
@H_301_22@))
if
@H_301_22@(!attribute.Equals( ""
@H_301_22@))
@H_301_22@XmlElement xe = (XmlElement)xn;
@H_301_22@xe.SetAttribute( attribute,value );
else
@H_301_22@XmlElement xe = doc.CreateElement( element );
if
@H_301_22@(attribute.Equals( ""
@H_301_22@))
@H_
403_926@
@H_301_22@xe.InnerText = value;
else
@H_301_22@xe.SetAttribute( attribute,value );
@H_301_22@xn.AppendChild( xe );
@H_301_22@doc.Save( path );
/// <summary>
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
public
static
void
@H_301_22@Update( string
@H_301_22@path,string
@H_301_22@value )
try
@H_301_22@XmlDocument doc = new
@H_301_22@XmlDocument();
@H_301_22@doc.Load( path );
@H_301_22@XmlNode xn = doc.SelectSingleNode( node );
@H_301_22@XmlElement xe = (XmlElement)xn;
if
@H_301_22@(attribute.Equals( ""
@H_301_22@))
@H_301_22@xe.InnerText = value;
else
@H_301_22@xe.SetAttribute( attribute,value );
@H_301_22@doc.Save( path );
@H_
404_1262@
/// <summary>
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
public
static
void
@H_301_22@Delete( string
@H_301_22@path,string
@H_301_22@attribute )
try
@H_301_22@XmlDocument doc = new
@H_301_22@XmlDocument();
@H_301_22@doc.Load( path );
@H_301_22@XmlNode xn = doc.SelectSingleNode( node );
@H_301_22@XmlElement xe = (XmlElement)xn;
if
@H_301_22@(attribute.Equals( ""
@H_301_22@))
@H_301_22@xn.ParentNode.RemoveChild( xn );
else
@H_301_22@xe.RemoveAttribute( attribute );
@H_301_22@doc.Save( path );
#region 读取XML资源到DataSet中
/// <summary>
/// 读取XML资源到DataSet中
/// </summary>
/// <param name="source">XML资源,文件为路径,否则为XML字符串</param>
/// <param name="xmlType">XML资源类型</param>
/// <returns>DataSet</returns>
public
static
@H_301_22@DataSet GetDataSet( string
@H_301_22@source,XmlType xmlType )
@H_301_22@DataSet ds = new
@H_301_22@DataSet();
if
@H_301_22@(xmlType == XmlType.File)
@H_301_22@ds.ReadXml( source );
else
@H_301_22@XmlDocument xd = new
@H_301_22@XmlDocument();
@H_301_22@xd.LoadXml( source );
@H_301_22@XmlNodeReader xnr = new
@H_301_22@XmlNodeReader( xd );
@H_301_22@ds.ReadXml( xnr );
#endregion
/// <summary>
/// </summary>
/// <param name="TableName"></param>
/// <returns></returns>
public
static
string
@H_301_22@GetNodeInfoByNodeName( string
@H_301_22@path,string
@H_301_22@nodeName )
string
@H_301_22@XmlString = ""
@H_301_22@;
@H_301_22@XmlDocument xml = new
@H_301_22@XmlDocument();
@H_301_22@xml.Load( path );
@H_301_22@System.Xml.XmlElement root = xml.DocumentElement;
@H_301_22@System.Xml.XmlNode node = root.SelectSingleNode( "//"
@H_301_22@+ nodeName );
if
@H_301_22@(node != null
@H_301_22@)
@H_301_22@XmlString = node.InnerText;
return
@H_301_22@XmlString;
#endregion
/// <summary>
/// </summary>
/// <param name="xml_string">含有xml信息的字符串</param>
public
static
void
@H_301_22@get_XmlValue_ds( string
@H_301_22@xml_string,ref
@H_301_22@DataSet ds )
@H_301_22@System.Xml.XmlDocument xd = new
@H_301_22@XmlDocument();
@H_301_22@xd.LoadXml( xml_string );
@H_301_22@XmlNodeReader xnr = new
@H_301_22@XmlNodeReader( xd );
@H_301_22@ds.ReadXml( xnr );
int
@H_301_22@a = ds.Tables.Count;
#endregion
#region 读取XML资源到DataTable中
/// <summary>
/// 读取XML资源到DataTable中
/// </summary>
/// <param name="source">XML资源,文件为路径,否则为XML字符串</param>
/// <param name="xmlType">XML资源类型:文件,字符串</param>
/// <param name="tableName">表名称</param>
/// <returns>DataTable</returns>
public
static
@H_301_22@DataTable GetTable( string
@H_301_22@source,XmlType xmlType,string
@H_301_22@tableName )
@H_301_22@DataSet ds = new
@H_301_22@DataSet();
if
@H_301_22@(xmlType == XmlType.File)
@H_301_22@ds.ReadXml( source );
else
@H_301_22@XmlDocument xd = new
@H_301_22@XmlDocument();
@H_301_22@xd.LoadXml( source );
@H_301_22@XmlNodeReader xnr = new
@H_301_22@XmlNodeReader( xd );
@H_301_22@ds.ReadXml( xnr );
return
@H_301_22@ds.Tables[tableName];
#endregion
#region 读取XML资源中指定的DataTable的指定行指定列的值
/// <summary>
/// 读取XML资源中指定的DataTable的指定行指定列的值
/// </summary>
/// <param name="source">XML资源</param>
/// <param name="xmlType">XML资源类型:文件,字符串</param>
/// <param name="tableName">表名</param>
/// <param name="rowIndex">行号</param>
/// <param name="colName">列名</param>
/// <returns>值,不存在时返回Null</returns>
public
static
object
@H_301_22@GetTableCell( string
@H_301_22@source,string
@H_301_22@tableName,int
@H_301_22@rowIndex,string
@H_301_22@colName )
@H_301_22@DataSet ds = new
@H_301_22@DataSet();
if
@H_301_22@(xmlType == XmlType.File)
@H_301_22@ds.ReadXml( source );
else
@H_301_22@XmlDocument xd = new
@H_301_22@XmlDocument();
@H_301_22@xd.LoadXml( source );
@H_301_22@XmlNodeReader xnr = new
@H_301_22@XmlNodeReader( xd );
@H_301_22@ds.ReadXml( xnr );
return
@H_301_22@ds.Tables[tableName].Rows[rowIndex][colName];
#endregion
#region 读取XML资源中指定的DataTable的指定行指定列的值
/// <summary>
/// 读取XML资源中指定的DataTable的指定行指定列的值
/// </summary>
/// <param name="source">XML资源</param>
/// <param name="xmlType">XML资源类型:文件,字符串</param>
/// <param name="tableName">表名</param>
/// <param name="rowIndex">行号</param>
/// <param name="colIndex">列号</param>
/// <returns>值,不存在时返回Null</returns>
public
static
object
@H_301_22@GetTableCell( string
@H_301_22@source,int
@H_301_22@colIndex )
@H_301_22@DataSet ds = new
@H_301_22@DataSet();
if
@H_301_22@(xmlType == XmlType.File)
@H_301_22@ds.ReadXml( source );
else
@H_301_22@XmlDocument xd = new
@H_301_22@XmlDocument();
@H_301_22@xd.LoadXml( source );
@H_301_22@XmlNodeReader xnr = new
@H_301_22@XmlNodeReader( xd );
@H_301_22@ds.ReadXml( xnr );
return
@H_301_22@ds.Tables[tableName].Rows[rowIndex][colIndex];
@H_
403_2816@
@H_301_22@}