自己写的一个 XML 文件操作类! 写的不好,仅供参考

using System;
using System.Xml;
using System.Data;
using System.Collections;
namespace HVSmartDevice
{
 /// <summary>
 /// XML 操作类
 /// </summary>
 public class XmlAction
 {
  XmlDocument doc;
  string fileName = null;
  /// <summary>
  /// 作者:
  /// 日期:2007-6-17
  /// 描述:得到XmlDocument 对象
  /// </summary>
  /// <param name="fileName">文件名</param>
  public XmlAction(string fileName)
  {
   doc= new XmlDocument();
   this.fileName = fileName;
   doc.Load(fileName);
  }
  /// <summary>
  /// 作者:
  /// 日期;2007-6*-17
  /// 描述:得到XMLElement对象
  /// </summary>
  /// <returns>XMLElement对象</returns>
  private XmlElement GetElement()
  {
   return doc.DocumentElement;
  }
  /// <summary>
  /// 作者:
  /// 日期:2007-6-17
  /// 描述:根据节点ID,获取节点
  /// </summary>
  /// <param name="id">节点ID</param>
  /// <returns>XmlNodeList</returns>
  public XmlNodeList GetNodeListByID(string xPath)
  {
   XmlElement xe = this.GetElement();
   return xe.SelectNodes(xPath);   
  }
  /// <summary>
  /// 作者:
  /// 日期:2007-6-17
  /// 描述:根据节点ID,更新XmlNode
  /// </summary>
  /// <param name="id">节点ID</param>
  public void UpdateNodeByID(System.Collections.Hashtable myParams,string xPath)
  {
   XmlElement xe = this.GetElement();  
   XmlNode xn = xe.SelectSingleNode(xPath);
   int temp = xn.ChildNodes.Count;
   //迭代HashTable
   IDictionaryEnumerator pParams = myParams.GetEnumerator();
   while(pParams.MoveNext())
   {
    //遍历Node的名字,如果运到匹配的,直接进行更改
    for(int i=0;i<temp;i++)
    {
     if(pParams.Key.Equals(xn.ChildNodes.Item(i).Name.ToString()))
     {
      xn.ChildNodes.Item(i).InnerText = pParams.Value.ToString();
     }
    }
   }
   this.SaveValue();
  }
  /// <summary>
  /// 作者:  /// 日期:2007-6-17
  /// 描述:根据ID增加节点
  /// </summary>
  /// <param name="id"></param>
  /// <param name="myParams"></param>
  /// <returns></returns>
  public int AddNodeByID(string xPath,string key,Hashtable myParams)
  {
   XmlElement xe = this.GetElement();
   XmlNode xn = xe.SelectSingleNode(xPath);
   //创建子节点
   XmlElement xel = this.CreateElement(key,myParams);
   //追加子节点
   xn.AppendChild(xel);
   //子节点的个数
   this.SaveValue();
   return xn.ChildNodes.Count;
  }

  /// <summary>
  /// 作者:
  /// 日期:2007-6-17
  /// 描述:创建Element
  /// </summary>
  /// <param name="myParams"></param>
  /// <returns>Element</returns>
  private XmlElement CreateElement(string key,Hashtable myParams)
  {   
   XmlElement xe = doc.CreateElement(key);
   //迭代HashTable
   IDictionaryEnumerator pParams = myParams.GetEnumerator();
   while (pParams.MoveNext())   //只要有下一个元素,定位到它上面
   {
    XmlElement xet = doc.CreateElement(pParams.Key.ToString());
    xet.InnerText = pParams.Value.ToString();
    xe.AppendChild(xet);
   }
   return xe;
  }
  /// <summary>
  /// 作者:  /// 日期:2007-6-17
  /// 描述:创建Node
  /// </summary>
  /// <param name="key"></param>
  /// <param name="values"></param>
  /// <returns>Node</returns>
  private XmlNode CreateXmlNode(string key,string values)
  {
   XmlElement xe = doc.CreateElement(key);
   xe.InnerText = values;
   return xe;
  }
  /// <summary>
  /// 作者:

  /// 日期:2007-6-17
  /// 描述:将更新后的信息写入XML文件中
  /// </summary>
  /// <param name="e">XmlElement</param>
  private void SaveValue()
  {
   //doc.AppendChild(e);
   doc.Save(this.fileName);
  }
 
 }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值