XML操作C#代碼

jopen 12年前發布 | 4K 次閱讀

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

namespace NetProject.Property { public class XmlDoc { /// <summary> /// 創建Xml文件 /// </summary> /// <param name="xmlPath">創建文件路徑</param> /// <param name="element"></param> public void CreateXmlNode(string xmlPath, string element) { //實例化Xml文檔類 XmlTextWriter xmlTextWriter = new XmlTextWriter(xmlPath,Encoding.UTF8); //創建Xml聲明 xmlTextWriter.WriteStartDocument(); xmlTextWriter.WriteStartElement(element); xmlTextWriter.Flush(); xmlTextWriter.Close(); }

    /// <summary>
    /// 新增Xml節點
    /// </summary>
    /// <param name="xmlPath"></param>
    /// <param name="singleNode"></param>
    /// <param name="node"></param>
    public void AddXmlElement(string xmlPath, string singleNode, XmlNode node)
    {
        //實例化Xml文檔類
        XmlDocument xmlDocument = new XmlDocument();
        //加載Xml文件
        xmlDocument.Load(xmlPath);
        xmlDocument.SelectSingleNode(singleNode).AppendChild(node);
        xmlDocument.Save(xmlPath);
    }

    /// <summary>
    /// 新增Xml節點
    /// </summary>
    /// <param name="xmlPath"></param>
    /// <param name="singleNode"></param>
    /// <param name="node"></param>
    public void AddXmlElement(string xmlPath, string singleNode, string element, string attribute, string value)
    {
        //實例化Xml文檔類
        XmlDocument xmlDocument = new XmlDocument();
        //加載Xml文件
        xmlDocument.Load(xmlPath);
        XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
        XmlElement xmlElement = xmlDocument.CreateElement(element); ;
        xmlElement.SetAttribute(attribute, value);
        xmlDocument.Save(xmlPath);
    }


    /// <summary>
    /// 讀取XML文件的XmlDocument
    /// </summary>
    /// <param name="xmlPath">Xml文件路徑</param>
    /// <returns></returns>
    public XmlDocument GetXmlDocument(string xmlPath)
    {
        try
        {
            //實例化Xml文檔類
            XmlDocument xmlDocument = new XmlDocument();
            //加載Xml文件
            xmlDocument.Load(GetMapPath(xmlPath));
            return xmlDocument;
        }
        catch (System.Xml.XmlException exp)
        {
            throw exp;
        }
        catch (System.IO.IOException exp)
        {
            throw exp;
        }
        catch (ArgumentNullException exp)
        {
            throw exp;
        }
        catch (ArgumentException exp)
        {
            throw exp;
        }
        catch (Exception exp)
        {
            throw exp;
        }
    }

    /// <summary>
    /// 讀取XML文件的XmlNode
    /// </summary>
    /// <param name="xmlPath">Xml文件路徑</param>
    /// <param name="singleNode">選擇匹配XPath表達式的第一個XmlNode</param>
    /// <returns></returns>
    public XmlNode GetXmlNode(string xmlPath, string singleNode)
    {
        try
        {
            //實例化Xml文檔類
            XmlDocument xmlDocument = new XmlDocument();
            //加載Xml文件
            xmlDocument.Load(GetMapPath(xmlPath));
            //獲取文件內容
            return xmlDocument.SelectSingleNode(singleNode);
        }
        catch (System.Xml.XPath.XPathException exp)
        {
            throw exp;
        }
        catch (System.Xml.XmlException exp)
        {
            throw exp;
        }
        catch (System.IO.IOException exp)
        {
            throw exp;
        }
        catch (ArgumentNullException exp)
        {
            throw exp;
        }
        catch (ArgumentException exp)
        {
            throw exp;
        }
        catch (Exception exp)
        {
            throw exp;
        }
    }

    /// <summary>
    /// 讀取XML文件的XmlElement
    /// </summary>
    /// <param name="xmlPath">Xml文件路徑</param>
    /// <param name="singleNode">選擇匹配XPath表達式的第一個XmlNode</param>
    /// <param name="xmlNodeString">節點名稱</param>
    /// <returns></returns>
    public XmlElement GetXmlElement(string xmlPath, string singleNode, string xmlNodeString)
    {
        try
        {
            //實例化Xml文檔類
            XmlDocument xmlDocument = new XmlDocument();
            //加載Xml文件
            xmlDocument.Load(GetMapPath(xmlPath));
            //獲取文件內容
            XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
            //提取節點名稱下的屬性值
            return xmlNode[xmlNodeString];
        }
        catch (System.Xml.XPath.XPathException exp)
        {
            throw exp;
        }
        catch (System.Xml.XmlException exp)
        {
            throw exp;
        }
        catch (System.IO.IOException exp)
        {
            throw exp;
        }
        catch (ArgumentNullException exp)
        {
            throw exp;
        }
        catch (ArgumentException exp)
        {
            throw exp;
        }
        catch (Exception exp)
        {
            throw exp;
        }

    }

    /// <summary>
    /// 讀取XML文件的節點屬性
    /// </summary>
    /// <param name="xmlPath">Xml文件路徑</param>
    /// <param name="singleNode">選擇匹配XPath表達式的第一個XmlNode</param>
    /// <param name="xmlNodeString">節點名稱</param>
    /// <param name="variables">節點屬性</param>
    /// <returns></returns>
    public string GetAttribute(string xmlPath, string singleNode, string xmlNodeString, string variables)
    {
        try
        {
            //實例化Xml文檔類
            XmlDocument xmlDocument = new XmlDocument();
            //加載Xml文件
            xmlDocument.Load(GetMapPath(xmlPath));
            //獲取文件內容
            XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
            //提取節點名稱下的屬性值
            return xmlNode[xmlNodeString].GetAttribute(variables);
        }
        catch (System.Xml.XPath.XPathException exp)
        {
            throw exp;
        }
        catch (System.Xml.XmlException exp)
        {
            throw exp;
        }
        catch (System.IO.IOException exp)
        {
            throw exp;
        }
        catch (ArgumentNullException exp)
        {
            throw exp;
        }
        catch (ArgumentException exp)
        {
            throw exp;
        }
        catch (Exception exp)
        {
            throw exp;
        }

    }

    /// <summary>
    /// 設置XML節點
    /// </summary>
    /// <param name="xmlNodeString">節點名稱</param>
    /// <param name="value">節點值</param>
    /// <param name="discrption">節點說明</param>
    public void SetAttribute(string xmlPath, string singleNode,string xmlNodeString, string attribute,string value,string description)
    {
        try
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(GetMapPath(xmlPath));
            //獲取文件內容
            XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
            //設置指定XML節點Value值
            xmlNode[xmlNodeString].SetAttribute(attribute, value);
            xmlNode[xmlNodeString].SetAttribute("Description", description);
            //將設置后的XML節點保存
            xmlDocument.Save(GetMapPath(xmlPath));
        }
        catch (Exception exp)
        {
            throw new Exception(exp.Message);
        }
    }

    /// <summary>
    /// 設置XML節點
    /// </summary>
    /// <param name="xmlPath">XML文件路徑</param>
    /// <param name="singleNode">選擇匹配XPath表達式的第一個XmlNode</param>
    /// <param name="xmlNodeString">指定節點</param>
    /// <param name="attribute">屬性數組</param>
    /// <param name="value">值數組</param>
    public void SetAttribute(string xmlPath, string singleNode, string xmlNodeString, string[] attribute, string[] value)
    {
        try
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(GetMapPath(xmlPath));
            //獲取文件內容
            XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
            for (int i = 0; i < attribute.Length; i++)
            {
                //設置指定XML節點Value值
                xmlNode[xmlNodeString].SetAttribute(attribute[i], value[i]);
            }              
            //將設置后的XML節點保存
            xmlDocument.Save(xmlPath);
        }
        catch (Exception exp)
        {
            throw new Exception(exp.Message);
        }
    }

    /// <summary>
    /// 通過XML名稱獲取XML物理路徑,可無限添加,前提是XML都位于同一網站目錄下
    /// </summary>
    /// <param name="xmlName"></param>
    /// <returns></returns>
    private string GetMapPath(string xmlName)
    {
        switch (xmlName)
        {
            case "GlobalVariables.xml":
                xmlName = System.Web.HttpContext.Current.Server.MapPath("~/XML/") + xmlName;
                break;
            default:
                break;
        }

        return xmlName;
    }
}

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!