XML操作在编程中还是经常遇到的,有时用XML作为数据存储还是非常方便的,下面是一段C#进行XML操作的类库,通过这个类可以很方便的进行XML文件的读写。

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Data;
using System.IO;

namespace simple
{
    public class XmlControl
    {
        protected string strXmlFile;
        protected XmlDocument objXmlDoc = new XmlDocument();

        public void loadDoc(string doc)
        {
            objXmlDoc.LoadXml(doc);
        }

        public void Load(string XmlFile)
        {
            //
            // TODO: 在这里加入建构函式的程式码
            //
            try
            {
                objXmlDoc.Load(XmlFile);
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            strXmlFile = XmlFile;
        }
        
        public void New(string XmlFile)
        {
            //新建xml文档
            XmlNode xmlnode = objXmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
            objXmlDoc.AppendChild(xmlnode);
            XmlElement xmlelement = objXmlDoc.CreateElement("config");
            objXmlDoc.AppendChild(xmlelement);
            strXmlFile = XmlFile;
        }

        public string GetData(string XmlPathNode)
        {
            //查找数据。
            return objXmlDoc.SelectSingleNode(XmlPathNode).InnerText;
        }

        public string[] GetArray(string XmlPathNode)
        {
            //查找数据。
            string[] array = new string[objXmlDoc.SelectNodes(XmlPathNode).Count];
            int i;
            for (i = 0; i < array.Length; i++)
            {
                array[i] = objXmlDoc.SelectNodes(XmlPathNode)[i].InnerText;
            }
            return array;
        }


        public void Replace(string XmlPathNode, string Content)
        {
            //更新节点内容。
            objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
        }

        public void Delete(string Node)
        {
            //删除一个节点。
            string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
            objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
        }

        public void InsertNode(string MainNode, string ChildNode, string Element, string Content)
        {
            //插入一节点和此节点的一子节点。
            XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
            XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
            objRootNode.AppendChild(objChildNode);
            XmlElement objElement = objXmlDoc.CreateElement(Element);
            objElement.InnerText = Content;
            objChildNode.AppendChild(objElement);
        }

        public void InsertNode(string MainNode, string Element, string Content)
        {
            //插入一节点
            XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
            XmlElement objElement = objXmlDoc.CreateElement(Element);
            objElement.InnerText = Content;
            objRootNode.AppendChild(objElement);
        }


        public void InsertElement(string MainNode, string Element, string Attrib, string AttribContent, string Content)
        {
            //插入一个节点,带一属性。
            XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
            XmlElement objElement = objXmlDoc.CreateElement(Element);
            objElement.SetAttribute(Attrib, AttribContent);
            objElement.InnerText = Content;
            objNode.AppendChild(objElement);
        }

        public void InsertElement(string MainNode, string Element, string Content)
        {
            //插入一个节点,不带属性。
            XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
            XmlElement objElement = objXmlDoc.CreateElement(Element);
            objElement.InnerText = Content;
            objNode.AppendChild(objElement);
        }

        public void Save()
        {
            //保存文档。
            try
            {
                objXmlDoc.Save(strXmlFile);
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            objXmlDoc = null;
        }
    }