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 = ; 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 = ;
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 = ;
foreach (DataRow row in table.Rows)
{
writer.WriteStartElement("r" + rn.ToString());
for (int cn = ; cn < table.Columns.Count + ; cn++)
{
writer.WriteStartElement("r" + rn.ToString() + "c" + cn.ToString());
writer.WriteString(row[cn - ].ToString());
writer.WriteEndElement();//endrncn
}
writer.WriteEndElement();//endrn
rn++;
} writer.WriteEndElement();//endbody
writer.WriteEndElement();//endtable writer.Flush(); stream.Position = ;
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 = ; 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 == )
{
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

(23)C#XML操作的更多相关文章

  1. PHP XML操作的各种方法解析

    PHP提供了一整套的读取 XML文件的方法,很容易的就可以编写基于 XML的脚本程序.本章将要介绍 PHP与 XML的操作方法,并对几个常用的 XML类库做一些简要介绍. XML是一种流行的半结构化文 ...

  2. LINQ系列:LINQ to XML操作

    LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...

  3. T-Sql(五)xml操作

    t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...

  4. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  5. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  6. 简单的XML操作类

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  7. .net学习笔记---xml操作及读写

    一.XML文件操作中与.Net中对应的类 微软的.NET框架在System.xml命名空间提供了一系列的类用于Dom的实现. 以下给出XML文档的组成部分对应.NET中的类: XML文档组成部分 对应 ...

  8. C#常用操作类库三(XML操作类)

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  9. php xml 操作。

    参考 文章:http://www.cnblogs.com/zcy_soft/archive/2011/01/26/1945482.html DOMDocument相关的内容. 属性: Attribut ...

随机推荐

  1. 4G来临,短视频社交分享应用或井喷

    因为工作的原因,接触短视频社交应用的时间相对较多,不管是自家的微视,还是别人家的Vine.玩拍.秒拍等,都有体验过.随着时间的推移,我愈发感受到有一股似曾相识的势能正在某个地方慢慢积聚,直到今天我才猛 ...

  2. linux运维笔记

    一.查找大文件 sudo find / -size +100M -exec ls -lh {} \;

  3. 【The VC Dimension】林轩田机器学习基石

    首先回顾上节课末尾引出来的VC Bound概念,对于机器学习来说,VC dimension理论到底有啥用. 三点: 1. 如果有Break Point证明是一个好的假设集合 2. 如果N足够大,那么E ...

  4. Leetcode 668.乘法表中第k小的数

    乘法表中第k小的数 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k 小的数字. 例 1: 输入 ...

  5. 深入理解css之absolute

    在慕课网上看到的张鑫旭大神的视频,做的笔记,以便日后翻看. 绝对定位与float 1.绝对定位和float有一样的特性,都有包裹性,和破坏性. 2.absolute和relative 如果不把他们俩放 ...

  6. Java TCP通信概念及实例

    TCP/UDP 协议 通俗解释: TCP协议和UDP协议的区别类似于电话系统和邮政系统. <1>TCP:类似于电话系统,建立双向的通信通道,确定连接,话音顺序接听. <2>UD ...

  7. LeetCode -- Valid Parenthese

    Question: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine i ...

  8. Ubuntu扩展系统盘容量,虚拟机下

    安装gparted软件 sudo apt-get install gparted 接下来, 我们开始用Gparted软件扩展Ubuntu目录的容量: 先看操作步骤: 1. 先从windows的 ntf ...

  9. [poj] 3907 Build Your Home || 求多边形面积

    原题 多组数据,到0为止. 每次给出按顺序的n个点(可能逆时针,可能顺时针),求多边形面积(保留整数) 多边形面积为依次每条边(向量)叉积/2的和 \(S=\sum _{i=1}^{n-1}p[i]* ...

  10. vs修改快捷键

    https://jingyan.baidu.com/album/9158e0006e10d8a254122826.html?picindex=1 https://sanwen8.cn/p/114IrR ...