• xmlhelper


    XMLHelper.cs

    using System;
    using System.Data;
    using System.Xml;
    using System.Collections.Specialized;
    using System.Diagnostics;
    using System.Collections;


    namespace TMFHTong
    {
     /// <summary>
     /// Summary description for XmlHelper.
     /// </summary>
     public class XmlHelper
     {
      private XmlHelper()
      {
      }
            #region
            /*****************************************************************
             * Author: Payne Wee
             * Exemple:
             *   RockXML.List(path, "/Node", "name", "")
             *   RockXML.List(path, "/Node/Element[@Attribute='Name']", "name", "Attribute")
             *****************************************************************/
            public static DataTable List(string strPath, string strNode, string strAttributeKey, string strAttributeValue)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(strAttributeKey.ToUpper(), typeof(string));
                dt.Columns.Add((strAttributeValue == string.Empty ? "Value" : strAttributeValue).ToUpper(), typeof(string));

                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(strPath);
                    XmlNode xn = doc.SelectSingleNode(strNode);

                    foreach (XmlNode n in xn.ChildNodes)
                    {
                        DataRow dr = dt.NewRow();
                        dr[0] = strAttributeKey.Equals(string.Empty) ? string.Empty : n.Attributes[strAttributeKey].Value;
                        dr[1] = strAttributeValue.Equals(string.Empty) ? n.InnerText : n.Attributes[strAttributeValue].Value;
                        dt.Rows.Add(dr);
                    }
                }
                catch { }

                return dt;
            }

            public static bool Create(string xmlFileName, string rootNodeName, string version, string encoding)
            {
                bool isSuccess = false;
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration(version, encoding, null);
                    XmlNode root = xmlDoc.CreateElement(rootNodeName);
                    xmlDoc.AppendChild(xmlDeclaration);
                    xmlDoc.AppendChild(root);
                    xmlDoc.Save(xmlFileName);
                    isSuccess = true;
                }
                catch (Exception ex)
                {
                    throw ex; //这里可以定义你自己的异常处理
                }
                return isSuccess;
            }

            /*****************************************************************
             * Author: Payne Wee
             * Exemple:
             *   RockXML.Read(path, "/Node", "")
             *   RockXML.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
             *****************************************************************/
            public static string Read(string strPath, string strNode, string strAttribute)
            {
                string value = string.Empty;
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(strPath);
                    XmlNode xn = doc.SelectSingleNode(strNode);
                    value = (strAttribute.Equals(string.Empty) ? xn.InnerText : xn.Attributes[strAttribute].Value);
                }
                catch { }
                return value;
            }

            /*****************************************************************
             * Author: Payne Wee
             * Exemple:
             *   RockXML.Insert(path, "/Node", "Element", "", "Value")
             *   RockXML.Insert(path, "/Node", "Element", "Attribute", "Value")
             *   RockXML.Insert(path, "/Node", "", "Attribute", "Value")
             *****************************************************************/
            public static void Insert(string strPath, string strNode, string strElement, string strAttribute, string strValue)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(strPath);
                    XmlNode xn = doc.SelectSingleNode(strNode);
                    if (strElement.Equals(string.Empty))
                    {
                        if (!strAttribute.Equals(string.Empty))
                        {
                            XmlElement xe = (XmlElement)xn;
                            xe.SetAttribute(strAttribute, strValue);
                        }
                    }
                    else
                    {
                        XmlElement xe = doc.CreateElement(strElement);
                        if (strAttribute.Equals(string.Empty))
                            xe.InnerText = strValue;
                        else
                            xe.SetAttribute(strAttribute, strValue);
                        xn.AppendChild(xe);
                    }
                    doc.Save(strPath);
                }
                catch { }
            }

            /*****************************************************************
             * Author: Payne Wee
             * Exemple:
             *   RockXML.Modify(path, "/Node", "", "Value")
             *   RockXML.Modify(path, "/Node", "Attribute", "Value")
             *****************************************************************/
            public static void Modify(string strPath, string strNode, string strAttribute, string strValue)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(strPath);
                    XmlNode xn = doc.SelectSingleNode(strNode);
                    XmlElement xe = (XmlElement)xn;
                    if (strAttribute.Equals(string.Empty))
                        xe.InnerText = strValue;
                    else
                        xe.SetAttribute(strAttribute, strValue);
                    doc.Save(strPath);
                }
                catch { }
            }

            /*****************************************************************
             * Author: Payne Wee
             * Exemple:
             * RockXML.Delete(path, "/Node", "")
             * RockXML.Delete(path, "/Node", "Attribute")
             *****************************************************************/
            public static void Delete(string strPath, string strNode, string strAttribute)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(strPath);
                    XmlNode xn = doc.SelectSingleNode(strNode);
                    XmlElement xe = (XmlElement)xn;
                    if (strAttribute.Equals(string.Empty))
                        xn.ParentNode.RemoveChild(xn);
                    else
                        xe.RemoveAttribute(strAttribute);
                    doc.Save(strPath);
                }
                catch { }
            }
            #endregion
          
     }
    }

    调用:

    string filepath = Server.MapPath("~")+"/xml/HouseList.xml";
                XmlHelper.Create(filepath, "HouseList", "1.0", "utf-8");
                XmlHelper.Insert(filepath, "HouseList", "House", "HouseNumber", "123");
                XmlHelper.Insert(filepath, "HouseList/House[@HouseNumber='123']", "ViewDate", "", "2013-09-28 15:12:03");

                XmlHelper.Insert(filepath, "HouseList", "House", "HouseNumber", "456");
                XmlHelper.Insert(filepath, "HouseList/House[@HouseNumber='456']", "ViewDate", "", "2013-10-28 15:12:03");

                string value = XmlHelper.Read(filepath, "/HouseList/House[@HouseNumber='123']", "");

                XmlHelper.Modify(filepath, "/HouseList/House[@HouseNumber='123']/ViewDate", "", "2013-10-28 15:30:47");

  • 相关阅读:
    redis基础
    docker日志清理脚本
    Hive修改表的所有者(Owner)
    User xxx does not have privileges for CREATETABLE的解决办法
    Spark读取Hive表中文显示乱码的解决办法
    Go语言之标识符与关键字
    Go语言之数据类型(三)
    bootstrapTable频繁向后台接口发请求
    框架整合疑云
    业务开发中-设计模式使用
  • 原文地址:https://www.cnblogs.com/codeloves/p/3344304.html
Copyright © 2020-2023  润新知