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);
}
}
}