(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配置节同一个效果都是读取值
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操作的更多相关文章
- PHP XML操作的各种方法解析
PHP提供了一整套的读取 XML文件的方法,很容易的就可以编写基于 XML的脚本程序.本章将要介绍 PHP与 XML的操作方法,并对几个常用的 XML类库做一些简要介绍. XML是一种流行的半结构化文 ...
- LINQ系列:LINQ to XML操作
LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...
- T-Sql(五)xml操作
t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...
- XML格式示例 与 XML操作(读取)类封装
header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...
- 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...
- 简单的XML操作类
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- .net学习笔记---xml操作及读写
一.XML文件操作中与.Net中对应的类 微软的.NET框架在System.xml命名空间提供了一系列的类用于Dom的实现. 以下给出XML文档的组成部分对应.NET中的类: XML文档组成部分 对应 ...
- C#常用操作类库三(XML操作类)
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- php xml 操作。
参考 文章:http://www.cnblogs.com/zcy_soft/archive/2011/01/26/1945482.html DOMDocument相关的内容. 属性: Attribut ...
随机推荐
- script async和defer
1.没有async和defer,html解析时遇到script标签,会先去下载js文件,文件加载完成立即执行,执行完了再开始解析后面的html,是一个顺序流的过程 2.async,加载和渲染后续文档元 ...
- 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库
孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...
- ./configure, make, sudo make install 的含义
一般编译安装会用到. 将压缩包example.tar.gz解压到onePackage下example, 在onePackage下新建install文件夹. 在终端中执行 1) 配置sudo ./con ...
- leetcode 149. 直线上最多的点数 解题报告
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +------- ...
- 仅需几行代码 轻松实现ETH代币空投
仅需几行代码 轻松实现ETH代币空投 批量发送以太坊,部署下面的合约,然后往下面的合约打币,就可以分发 ragma solidity ^0.4.21; contract batchTransfer { ...
- php中变量的详细介绍
变量的含义: 用于存储信息的容器,在程序运行期间,可以变化的量 变量的命名规则: 1.变量以$符开始 2.变量名只能以字母或下划线开始 3.变量名只能是字母,下划线,数字,不能有特殊字符:逗号,句号, ...
- CodeForces Round #515 Div.3 A. Vova and Train
http://codeforces.com/contest/1066/problem/A Vova plans to go to the conference by train. Initially, ...
- 【bzoj2662】[BeiJing wc2012]冻结 分层图Spfa
原文地址:http://www.cnblogs.com/GXZlegend 题目描述 “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„ ...
- 简单的FreeBSD 的内核编译
简单的FreeBSD 的内核编译 删除并重新下载内核源码 删除自带的内核源码rm -rf /usr/src 下载内核源码wget https://download.freebsd.org/ftp/re ...
- Hadoop中maptask数量的决定因素
刚开始接触hadoop平台的时候 部分初学者对于mapreduce中的maptask的数量是怎么确定的 可能有点迷惑,如果看了jobclient里面的maptask初始化的那段源码,那么就比较清楚了, ...