zoukankan      html  css  js  c++  java
  • C#操作XML的封装类

    XML文件读写类

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

    public XmlControl(string XmlFile)
    {
    //
    // TODO: 在这里加入建构函式的程序代码
    //
    try
    {
    objXmlDoc.Load(XmlFile);
    }
    catch (System.Exception ex)
    {
    throw ex;
    }
    strXmlFile = XmlFile;
    }

    public DataView GetData(string XmlPathNode)
    {
    //查找数据。返回一个DataView
    DataSet ds = new DataSet();
    StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
    ds.ReadXml(read);
    return ds.Tables[0].DefaultView;
    }

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

    =========================================================

    实例应用:

    string strXmlFile = Server.MapPath("TestXml.xml");
    XmlControl xmlTool = new XmlControl(strXmlFile);

    // 数据显视
    // dgList.DataSource = xmlTool.GetData("Book/Authors[ISBN=\"0002\"]");
    // dgList.DataBind();

    // 更新元素内容
    // xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp");
    // xmlTool.Save();

    // 添加一个新节点
    // xmlTool.InsertNode("Book","Author","ISBN","0004");
    // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa");
    // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii");
    // xmlTool.Save();

    // 删除一个指定节点的所有内容和属性
    // xmlTool.Delete("Book/Author[ISBN=\"0004\"]");
    // xmlTool.Save();

    // 删除一个指定节点的子节点
    // xmlTool.Delete("Book/Authors[ISBN=\"0003\"]");
    // xmlTool.Save();

    XML与Dataset相互转换类

        class XmlDatasetConvert
        {
            //将xml对象内容字符串转换为DataSet
            public static DataSet ConvertXMLToDataSet(string xmlData)
            {
                StringReader stream = null;
                XmlTextReader reader = null;
                try
                {
                    DataSet xmlDS = new DataSet();
                    stream = new StringReader(xmlData);
                    //从stream装载到XmlTextReader
                    reader = new XmlTextReader(stream);
                    xmlDS.ReadXml(reader);
                    return xmlDS;
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (reader != null) reader.Close();
                }
            }

            //将xml文件转换为DataSet
            public static DataSet ConvertXMLFileToDataSet(string xmlFile)
            {
                StringReader stream = null;
                XmlTextReader reader = null;
                try
                {
                    XmlDocument xmld = new XmlDocument();
                    xmld.Load(xmlFile);

                    DataSet xmlDS = new DataSet();
                    stream = new StringReader(xmld.InnerXml);
                    //从stream装载到XmlTextReader
                    reader = new XmlTextReader(stream);
                    xmlDS.ReadXml(reader);
                    //xmlDS.ReadXml(xmlFile);
                    return xmlDS;
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (reader != null) reader.Close();
                }
            }

            //将DataSet转换为xml对象字符串
            public static string ConvertDataSetToXML(DataSet xmlDS)
            {
                MemoryStream stream = null;
                XmlTextWriter writer = null;

                try
                {
                    stream = new MemoryStream();
                    //从stream装载到XmlTextReader
                    writer = new XmlTextWriter(stream, Encoding.Unicode);

                    //用WriteXml方法写入文件.
                    xmlDS.WriteXml(writer);
                    int count = (int)stream.Length;
                    byte[] arr = new byte[count];
                    stream.Seek(0, SeekOrigin.Begin);
                    stream.Read(arr, 0, count);

                    UnicodeEncoding utf = new UnicodeEncoding();
                    return utf.GetString(arr).Trim();
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (writer != null) writer.Close();
                }
            }

            //将DataSet转换为xml文件
            public static void ConvertDataSetToXMLFile(DataSet xmlDS,string xmlFile)
            {
                MemoryStream stream = null;
                XmlTextWriter writer = null;

                try
                {
                    stream = new MemoryStream();
                    //从stream装载到XmlTextReader
                    writer = new XmlTextWriter(stream, Encoding.Unicode);

                    //用WriteXml方法写入文件.
                    xmlDS.WriteXml(writer);
                    int count = (int)stream.Length;
                    byte[] arr = new byte[count];
                    stream.Seek(0, SeekOrigin.Begin);
                    stream.Read(arr, 0, count);

                    //返回Unicode编码的文本
                    UnicodeEncoding utf = new UnicodeEncoding();
                    StreamWriter sw = new StreamWriter(xmlFile);
                    sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                    sw.WriteLine(utf.GetString(arr).Trim());
                    sw.Close();
                }
                catch( System.Exception ex )
                {
                    throw ex;
                }
                finally
                {
                    if (writer != null) writer.Close();
                }
            }

        }

     

  • 相关阅读:
    python网络编程之最简单的单工通信
    ruby : Exception Notification
    python学习之操作mysql
    python学习之最简单的获取本机ip信息的小程序
    python学习之最简单的用户注册及登录验证小程序
    mongo数据库的导入导出
    mac安装django1.5.4
    mac安装软件管家homebrew
    关于mac安装rails报错clang: error: unknown argument
    在mac上安装nodejs
  • 原文地址:https://www.cnblogs.com/fhuafeng/p/1803479.html
Copyright © 2011-2022 走看看