zoukankan      html  css  js  c++  java
  • C#操作XML代码整理

    using System.Xml;
    using System.IO;

    /// <summary>
    /// XMLProc 的摘要说明
    /// 将数据写入XML文件的方法
    /// SaveXML_DataSet()利用DataSet写入XML文件
    /// SaveXML_XmlTextWriter()利用XmlTextWriter写入XML文件
    /// SaveXML_XmlNode()利用XmlNode写入XML文件
    ///
    /// 从XML文件中读取数据
    /// GetXML_XmlTextReader()
    /// GetXML_XmlNodeReader()
    /// </summary>
    public class XMLProc
    {
    public XMLProc()
    {
     
    //
     
    // TODO: 在此处添加构造函数逻辑
     
    //
    }
       
    ///<summary>
       
    /// 利用XmlTextWriter不容易实现追加,也就是说每次写入XML文档的数据都是覆盖式的,不容易实现在原有数据的基础上追加数据,
       
    /// 而采用XmlNode模式就能方便地实现数据追加
       
    /// 利用DataSet也不是追加数据
       
    ///</summary>
       
       
    //利用DataSet把数据写入XML文件,不实现追加
        public static string SaveXML_DataSet(BaseInfo.Phonebook pb)
        {
           
    try
            {
                DataTable dt
    = new DataTable();
                dt.Columns.Add(
    "name", Type.GetType("System.String"));
                dt.Columns.Add(
    "telphone", Type.GetType("System.String"));
                ……

                DataRow dr
    = dt.NewRow();
                dr[
    0] = pb.name;
                dr[
    1] = pb.telphone;
                ……

                dt.Rows.Add(dr);
                System.Data.DataSet ds
    = new DataSet();
                ds.Tables.Add(dt);

               
    //将DataSet里面的数据写入XML
                ds.WriteXml(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"));
               
               
    return "true";
            }
           
    catch(Exception ex)
            {
               
    return ex.ToString();
            }
        }   
       
    //利用xmlTextWriter往XML文件写入数据,没有实现追加
        public static string SaveXMLData_XmlTextWriter(BaseInfo.Phonebook pb)
        {
           
    try
            {
               
    //创建一个XmlTextWriter类的实例对象
                System.IO.FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"));
               
    //if (!file.Exists)
             
                XmlTextWriter textWriter
    = new XmlTextWriter(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"), System.Text.Encoding.UTF8);
               
               
    //开始写过程,调用WriterStartDocument方法写入文件头信息
               
    //例如<?xml version="1.0" encoding="utf-8"?>
                textWriter.WriteStartDocument();

               
    //写入根节点<phonebook></phonebook>
                textWriter.WriteStartElement("phonebook");
                textWriter.WriteStartElement(
    "member");

               
    //写入节点name
                textWriter.WriteStartElement("name", "");
               
    //为name节点写入用户输入的值
                textWriter.WriteString(pb.name);
               
    //写入name节点的结束符
                textWriter.WriteEndElement();

                textWriter.WriteStartElement(
    "telphone", "");
                textWriter.WriteString(pb.telphone);
                textWriter.WriteEndElement();

                ……

               
    //写入文档结束,调用WriteEndDocument方法
                textWriter.WriteEndDocument();

               
    //关闭textWriter
                textWriter.Close();

               
    return "true";       
            }
           
    catch (Exception ex)
            {
               
    return ex.ToString();
            }
        }
       
    //利用XmlNode往XML文件写入数据,可以实现追加
        public static string SaveXMLData_XmlNode(BaseInfo.Phonebook pb)
        {
           
    try
            {
               
    //创建一个XmlDocument 对象,用于载入存储信息的XML文件
                System.Xml.XmlDocument xdoc = new XmlDocument();
                xdoc.Load(System.Web.HttpContext.Current.Server.MapPath(
    "phonebook.xml"));
               
    //创建一个menber节点并将它添加到根节点下
                XmlElement parentNode = xdoc.CreateElement("member");
                xdoc.DocumentElement.PrependChild(parentNode);
               
    //创建所有用于存储信息的节点
                XmlElement nameNode = xdoc.CreateElement("name");
                XmlElement telphoneNode
    = xdoc.CreateElement("telphone");
                ……

               
    ///获取文本信息
                XmlText nameText = xdoc.CreateTextNode(pb.name);
                XmlText telphoneText
    = xdoc.CreateTextNode(pb.telphone);
                ……

               
    ///将上面的各个存储信息节点添加到menber节点下,但并不包含最终的值
                parentNode.AppendChild(nameNode);
                parentNode.AppendChild(telphoneNode);
                ……

               
    ///将上面获取的文本信息添加到与之相对应的节点中
                nameNode.AppendChild(nameText);
                telphoneNode.AppendChild(telphoneText);
                ……

               
    ///保存存储信息的XML文件
                xdoc.Save(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"));

               
    return "true";
            }
           
    catch (Exception ex)
            {
               
    return ex.ToString();
            }
        }

       
    //XmlTextReader类实现的查找程序
        public static string GetXML_XmlTextReader(string keyName)
        {
           
    //XMLTextReader读取XML文件
            XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"));
           
    if (keyName == "")
            {
               
    string outMsg = "";
               
    string currentNodeName = "";
               
    int i = 1;
               
    //利用xmltextreader对象的Read()方法循环读取文件的节点
                while (xmltextreader.Read())
                {
                   
    //当节点类型是元素的时候,记录该节点名称
                    if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element)
                    {
                        currentNodeName
    = xmltextreader.LocalName.ToString();
                    }
                   
    if (xmltextreader.NodeType == System.Xml.XmlNodeType.Text)
                    {
                       
    //把这个人的属性组织成文本串,便天页面输出
                        outMsg += "<tr bgColor=#fff5b1><td>" + currentNodeName + "</td><td>" + xmltextreader.Value + "</td></tr>";
                    }
                   
    if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals("member"))
                    {
                        outMsg
    += "<tr><td>联系人:</td><td><font color=red>(" + (i++) + ")</font></td></tr>";
                    }
                }
                outMsg
    = "<table>" + outMsg + "</table>";
               
    //关闭xmltextreader
                xmltextreader.Close();

               
    //显示联系人的详细信息
               
    //Response.Write(outMsg);
                return outMsg;
            }
           
    else
            {
               
    //XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"));
                bool findflag = false;
               
    string outMsg = "<table><tr><td collspan=2><font color=red>已经查找到下列联系人:</font></td></tr>";
               
    string currentNodeName = "";
               
    //利用xmltextreader对象的Read()方法自我表现读取文件的节点
                while (xmltextreader.Read())
                {
                   
    //当找到了要查找的人,并且当前节点为元素,并且节点名称为"member"时退出循环
                    if (findflag == true && xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals("member"))
                    {
                       
    break;
                    }
                   
    //当节点类型是元素的时候,记录该节点名称
                    if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element)
                    {
                        currentNodeName
    = xmltextreader.LocalName.ToString();
                    }
                   
    //还没有查找到指定的人,并且当前节点类型为文本,并且当前节点的节点值与要查找的人符合时
                    if ((findflag == false) && (xmltextreader.NodeType == System.Xml.XmlNodeType.Text) && (xmltextreader.Value == keyName))//当为文本类型同时对应的值为要查找的人的时候
                    {
                        findflag
    = true;//设置找到了要查找的人的标志
                    }
                   
    //如果已经找到,并且当前节点类型为文本时,循环记录这个人的所有信息
                    if (findflag == true && xmltextreader.NodeType == System.Xml.XmlNodeType.Text)
                    {
                        outMsg
    += "<tr bgcolor=#fff5b1><td align=right>" + currentNodeName + ":</td><td>" + xmltextreader.Value + "</td></tr>";
                    }
                   
    //如果已经找到了这个人,同时Xtr当前为文本类型,那么
                }
               
    //关闭xmltextreader
                xmltextreader.Close();
                outMsg
    += "</table>";

               
    //显示查找的人的详细信息
               
    //Response.Write(outMsg);
                return outMsg;
            }
        }
       
    //利用XmlNodeReader实现查找的程序
        public static string GetXML_XmlNodeReader(string keyName)
        {
            XmlDocument xml
    = new XmlDocument();
           
    bool findNode = false;

           
    try
            {
                xml.Load(System.Web.HttpContext.Current.Server.MapPath(
    "phonebook.xml"));
            }
           
    catch
            { }

            XmlNodeReader read
    = new XmlNodeReader(xml);
           
    while (read.Read())
            {
               
    if (read.NodeType == System.Xml.XmlNodeType.Element && read.LocalName.ToString().Equals(keyName))
                {
                    read.Read();
                   
    if (read.NodeType == System.Xml.XmlNodeType.Text)
                    {
                       
    //Response.Write(read.Value);
                        return read.Value;
                       
    //break;
                    }
                }
            }
           
    return "";
        }
    }
  • 相关阅读:
    CentOS下Varnish实现动静分离
    Varnish语法
    Varnish日志切割+参数优化
    阿里云CentOS7下部署Django+uwsgi+pip3+pytz+python3
    搭建Hadoop伪分布式环境
    [Linux]-gitlab安装
    pyspider安装
    阿里云ECS搭建SVN
    在Ubuntu18.04安装Adobe Flash Player插件
    从SQL的视角用powershell
  • 原文地址:https://www.cnblogs.com/moss_tan_jun/p/1849281.html
Copyright © 2011-2022 走看看