zoukankan      html  css  js  c++  java
  • (23)C#XML操作

    APP.config是一个典型的XML文件

    打开vs2008在项目上右键-添加-新建项

    选择应用程序配置文件,默认名称为APP.config,新建打开后默认代码如下

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    </configuration>

    所有的代码都要写在<configuration>     </configuration>之间

     

     C#空间要引入using System.Configuration;

    1、appSettings配置节

     <appSettings>
      <add key="key1" value="value1" />
      <add key="key2" value="value2" />
     </appSettings>

    C#读取appSettings配置节

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Configuration;
    
    namespace xml
    {
        class Program
        {
            static void Main(string[] args)
            {
                  string str = ConfigurationSettings.AppSettings["key1"];//过时
            string str= ConfigurationManager.AppSettings["key1"];
                Console.WriteLine(str);
                  Console.ReadLine();
            }
        }
    }

     运行结果

    作用:可以在程序安装好后通过修改appConfig改变字符串的值,达到某些目的

    2、applicationSettings配置节

     <applicationSettings>
    
        <WinService>
    
            <setting name="WinService_Login" serializeAs="String">
    
                <value>http://192.168.208.65:6888/abc/mm</value>
    
            </setting>
    
        </WinService>
    
    </applicationSettings>      

    C#读取applicationSettings配置节

     string sUrl =  MyProject .Properties.Settings.Default. WebSrv ; 

    applicationSettings配置节和appSettings配置节同一个效果都是读取值

    用appSettings读取方式,需要手动添加app.config内容(appSettings字段),
    而且使用ConfigurationManager时要加上 using System.Configuration; 同时添加System.Configuration.dll引用
    还有一点就是应用程序目录必须存在MyProject.exe.config文件,否则exe会打不开!
     
    使用applicationSettings的优点是直接可以在Settings界面中编辑内容,还可以构建和测试connectionString字段, 参数配置更直观.
    应用程序目录不必一定要有MyProject.exe.config文件,如果没有该文件,读出的值是编译时设置的值,否则读取该文件中的值.

    3、connectionStrings配置节

    如果无法读取文件需要再VS中添加引用 System.configuration.dll,否则不能使用ConfigurationManager这个类.

      <connectionStrings>
        <!-- Oracle 连接-->
        <add name="connectionName" connectionString="data source=orcl;persist security info=True;user id=用户名;password=密码;"></add>
      </connectionStrings>

    读取connectionStrings

    string connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString(); 

    DataTable与XML转换

    #region 将datatable解析成xml的方法
    
            public static string DataTable2XML(DataTable table)
            {
                MemoryStream stream = new MemoryStream();
                XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
                writer.Formatting = Formatting.Indented;
                writer.Indentation = 4;
    
                writer.WriteStartDocument();
    
                writer.WriteStartElement("table");
    
                writer.WriteStartElement("rowCount");
                writer.WriteString(table.Rows.Count.ToString());
                writer.WriteEndElement();//endrowcount
    
                writer.WriteStartElement("headCount");
                writer.WriteString(table.Columns.Count.ToString());
                writer.WriteEndElement();//endheadcount
    
                writer.WriteStartElement("head");
                int hn = 1;
                foreach (DataColumn col in table.Columns)
                {
                    writer.WriteStartElement("h" + hn.ToString());
                    writer.WriteString(col.ColumnName.ToString());
                    writer.WriteEndElement();//endhn
                    hn++;
                }
                writer.WriteEndElement();//endhead
    
                writer.WriteStartElement("body");
                int rn = 1;
                foreach (DataRow row in table.Rows)
                {
                    writer.WriteStartElement("r" + rn.ToString());
                    for (int cn = 1; cn < table.Columns.Count + 1; cn++)
                    {
                        writer.WriteStartElement("r" + rn.ToString() + "c" + cn.ToString());
                        writer.WriteString(row[cn - 1].ToString());
                        writer.WriteEndElement();//endrncn
                    }
                    writer.WriteEndElement();//endrn
                    rn++;
                }
    
                writer.WriteEndElement();//endbody
                writer.WriteEndElement();//endtable
    
                writer.Flush();
    
                stream.Position = 0;
                StreamReader reader = new StreamReader(stream);
                string ret = reader.ReadToEnd();
                //SaveXMLFile(ret);
                writer.Close();
                return ret;
            }
    
    #endregion
    
      #region 解析xml文件到内存datatable
            private DataTable XML2DataTable(string xml)
            {
                int rowCount, headCount;
                DataTable table = new DataTable();
    
                //XmlDocument doc = new XmlDocument();
                //string xmlContent = File.ReadAllText(@"c:物料(1).txt", Encoding.Default);
                //doc.LoadXml(xmlContent);
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);
                SaveXMLFile(doc);
                foreach (XmlNode nodeDoc in doc.ChildNodes)
                {
                    if (nodeDoc.Name.Equals("table"))
                    {
                        foreach (XmlNode nodeTableChild in nodeDoc.ChildNodes)
                        {
                            if (nodeTableChild.Name.Equals("rowCount"))
                            {
                                Console.WriteLine(nodeTableChild.InnerText);
                                rowCount = Convert.ToInt32(nodeTableChild.InnerText);
                            }
                            if (nodeTableChild.Name.Equals("headCount"))
                            {
                                Console.WriteLine(nodeTableChild.InnerText);
                                headCount = Convert.ToInt32(nodeTableChild.InnerText);
                            }
                            if (nodeTableChild.Name.Equals("head"))
                            {
                                foreach (XmlNode nodeHeadChild in nodeTableChild.ChildNodes)
                                {
                                    Console.WriteLine(nodeHeadChild.InnerText);
                                    table.Columns.Add(nodeHeadChild.InnerText);
                                }
                            }
                            if (nodeTableChild.Name.Equals("body"))
                            {
                                foreach (XmlNode nodeBodyChild in nodeTableChild.ChildNodes)
                                {
                                    if (!nodeBodyChild.Name.Contains("c"))
                                    {
                                        Console.WriteLine(nodeBodyChild.Name);
                                        DataRow row = table.NewRow();
                                        for (int i = 0; i < table.Columns.Count; i++)
                                        {
                                            Console.WriteLine(nodeBodyChild.ChildNodes[i].InnerText);
                                            row[i] = nodeBodyChild.ChildNodes[i].InnerText;
                                        }
                                        table.Rows.Add(row);
                                    }
                                }
                            }
                        }
                    }
                }
                if (table.Rows.Count == 0)
                {
                    throw new Exception("xml中没有包含任何数据!");
                }
                return table;
            }
    
            private void SaveXMLFile(XmlDocument doc)
            {
                string path = Server.MapPath("") + "\XML";
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string fileName = path + "\E2M_" + Guid.NewGuid().ToString() + ".xml";
                fileName = fileName.Replace('-', '_');
                doc.Save(fileName);
            }
            #endregion
  • 相关阅读:
    FZU 1005 Fast Food(dp)
    POJ 3186 Treats for the Cows(区间DP)
    2016郑州轻工业学院校赛 B 蛤玮的财宝
    c++大数模板
    2015轻院校赛 H五子棋
    poj 1015 Jury Compromise
    modbus协议说明(转)
    STM32 flash 内存分布介绍
    STM32 程序所占用空间计算 && FLASH存储的起始地址计算
    C float与char数组 互转
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/6080661.html
Copyright © 2011-2022 走看看