(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 ...
随机推荐
- jquery取值赋值
("#A").val("1") id为A的值就是1了 jQuery中都这样,赋值的时候作为参数传给函数,和单纯的js有区别,像 $("#A" ...
- JavaWeb项目中使用ajax上传文件
1.jsp $("#cxsc").click(function(){ var bankId = $("#bankId").val(); var formdata ...
- (原)UE4.20 自定义编辑器 - 基础(一)创建编辑器模块
@author:白袍小道 前言: 本小文参考了UnrealC++,游戏编辑器(应该都找不到了嘿嘿)等书籍. 引擎基于UnrealEngine4.20版本(由于UnrealC++ 用的是 ...
- Spring Cloud Config 搭建Config 服务
配置中心: open API 配置生效监控 一致性的K-V存储 统一配置的实时推送 配置全局恢复.备份.历史版本 高可用集群 通过config 获取配置,流程: 下面介绍,基于spring cloud ...
- PHP实现RSA签名生成订单功能【支付宝示例】
//组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的1 ...
- 使用awk根据多维度统计系统tps
业务简单日志格式: [2017-08-28 01:00:00.523]transfer_search,7001045,1708271100083774377,20170827,,,,,,,,,,001 ...
- WebStrom Sass 编译配置 windows
第一步: 先安装Ruby下载 一路next 安装完成后打开开始菜单 打开后输入 gem install sass sass -v 出现版本号说明成功 第二部配置webstorm 在webstorm中s ...
- 如何写出高质量的JavaScript代码
优秀的Stoyan Stefanov在他的新书中(<Javascript Patterns>)介绍了很多编写高质量代码的技巧,比如避免使用全局变量,使用单一的var关键字,循环式预存长度等 ...
- 《R语言实战》读书笔记--学习张丹日志
从张丹的日志(http://blog.fens.me/rhadoop-r-basic/)中第九条对象看到R对象的几个总结: 1.内在属性 mode length 所有对象都有的属性 2.外部属性 at ...
- Codeforces Round #522 (Div. 2) C. Playing Piano
C. Playing Piano 题目链接:https://codeforces.com/contest/1079/problem/C 题意: 给出数列{an},现在要求你给出一个数列{bn},满足: ...