C#中将DataSet的内容写成XML时如何格式化字段数据

许多读者经常询问一个问题,那就是在将DataSet的内容写成XML时,如何格式化字段数据。最常见的需求,就是希望日期时间值与数值数据能够以所需的格式呈现于XML中。欲达此目的,可以采用下列两种作法:

◆使用XmlConvert类。

◆将一个XSLT转换套用至DataSet数据的XML表示。

程序范例

图 12-23所示是程序范例CH12_DemoForm018.cs的执行画面,我们发现,从DataSet写成XML的日期与薪资字段数据皆已采用我们所要求的格式。基本上,本范例是利用XmlConvert类来完成字段的格式化操作。相关程序代码编写在按钮的Click事件处理函数中,列示如下:

图 12-23

// 导入命名空间。
using System.Xml;
using System.Data.SqlClient;
using System.IO;
private void btnWriteDataSetToXml_Click(object sender, EventArgs e)
{
string myXmlFile = @"C:\DataSetOutputXml.xml";
try
{
// 建立一个 XmlTextReader 对象来读取 XML 数据。
using(XmlTextReader myXmlReader =
new XmlTextReader(ds.GetXml(), XmlNodeType.Element, null))
{
// 使用指定的文件与编码方式来建立一个 XmlTextWriter 对象。
using(System.Xml.XmlTextWriter myXmlWriter =
new System.Xml.XmlTextWriter(myXmlFile, Encoding.UTF8))
{
myXmlWriter.Formatting = Formatting.Indented;
myXmlWriter.Indentation = 4;
myXmlWriter.WriteStartDocument();
string elementName = "";
// 解析并显示每一个节点。
while(myXmlReader.Read())
{
switch(myXmlReader.NodeType)
{
case XmlNodeType.Element:
myXmlWriter.WriteStartElement(myXmlReader.Name);
elementName = myXmlReader.Name;
break;
case XmlNodeType.Text:
switch(elementName.ToLower())
{
case "出生日期":
// 要求转换成字符串的日期时间数据采用自定义的格式字符串来格式化。
myXmlWriter.WriteString(XmlConvert.ToDateTime(myXmlReader.Value,
XmlDateTimeSerializationMode.Local).ToString(
"yyyy 年 MMMM dd 号 dddd,时间 HH 点 mm 分 ss 秒"));
break;
case "雇用日期":
case "加薪日期":
// 要求转换成字符串的日期时间数据采用简短日期模式。
myXmlWriter.WriteString(XmlConvert.ToDateTime(myXmlReader.Value,
XmlDateTimeSerializationMode.Local).ToString("d"));
break;
case "起薪":
case "目前薪资":
// 要求转换成字符串的薪资值采用货币格式。
myXmlWriter.WriteString(XmlConvert.ToDecimal(
myXmlReader.Value).ToString("c"));
break;
default:
myXmlWriter.WriteString(myXmlReader.Value);
break;
}
break;
case XmlNodeType.EndElement:
myXmlWriter.WriteEndElement();
break;
}
}
}
}
// 读取所输出的 Xml 文件,并将其内容显示在 TextBox 文本框中。
txtXmlResult.Text = File.ReadAllText(myXmlFile);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

时间: 2024-10-26 05:29:10

C#中将DataSet的内容写成XML时如何格式化字段数据的相关文章

C# DataSet的内容写成XML时如何格式化字段数据_C#教程

欲达此目的,可以采用下列两种作法: ◆使用XmlConvert类. ◆将一个XSLT转换套用至DataSet数据的XML表示. 程序范例 本范例是利用XmlConvert类来完成字段的格式化操作. 复制代码 代码如下: // 导入命名空间. using System.Xml; using System.Data.SqlClient; using System.IO; private void btnWriteDataSetToXml_Click(object sender, EventArgs

数据分析-C# 读取4g大小的txt文件,并写成xml文件

问题描述 C# 读取4g大小的txt文件,并写成xml文件 我这边有个日志文件,非常的大,这边需要对这个日志文件进行数据分析, 对于每一行的数据进行处理比如ip地址相同的数据:ip:127.0.0.1 , num 22, starttime 2015-2-5 12:21:20 endtime 2015-2-5 23:59:59提取这样格式的数据 并写入xml文件中,由于数据非常的大,写人的非常慢 解决方案 直接用Hadoop,Spark等分布式框架做分析吧,数据量太大了. 这么大的XML解析起来

C#如何把上传的数据写成xml文档

问题描述 C#如何把上传的数据写成xml文档,要详细代码 解决方案 解决方案二:Linq2Xml...神马样的问题,神马样的回答.解决方案三:Xml串行化:[XmlRoot]publicclassProcduct{privateintprodId;[XmlElement]publicintProdId{get{returnprodId;}set{prodId=value;}}privatestringprodName;[XmlElement]publicstringProdName{get{re

DataSet写入XML时如何格式化??

问题描述 DataSet写入XML时如何格式化??比如原来数据是80.10不格式化生成XML文件的里面是80.180.00为80我想把数据格式化成80.10-----80.10 解决方案 解决方案二:没人回答,,,,解决方案三:就没有人知道吗解决方案四:貌似以前做是在生成datatable之前对其生成的每个行进行格式化的....好久没做过这些方面的了帮顶下~~~解决方案五:顶解决方案六:顶解决方案七:xsl解决方案八:楼上的知道吗,,帮我一下,,谢谢QQ:110930961解决方案九:想了半天,

如何实现将datagridview的内容保存成excel时显示进度条

问题描述 各位大虾:请问如何在保存数据到excel的过程中显示保存的进度条那.我现在讲datagridview的内容保存到excel时总是会卡顿很久,线做一个进度条显示保存的进度.但是不知道怎么弄,求指点!注意:需要真实显示保存的进度状态. 解决方案 解决方案二:保存时如果你是遍历grid,那就加个progressbar就是了解决方案三:引用楼主guangzi8531的回复: 各位大虾:请问如何在保存数据到excel的过程中显示保存的进度条那.我现在讲datagridview的内容保存到exce

Asp.net2.0中用Dataset向Access里添加记录时无值字段也会被添加为空,默认值不管用,怎么回事啊

问题描述 我用DataSet向Access里添加新记录的时候,本想省事用字段的默认值自动赋值,但现在只要OleDbDataAdapter一更新记录就将没有赋值的字段自动设置为"",字段的默认值根本不管用,这是为什么呢,请高人指点一二 解决方案 解决方案二:默认值不好用你就给他自动加个值呗!解决方案三:自己加值很麻烦,要写很多重复的代码的,所以想省事的解决方案四:沉水,自顶解决方案五:再顶解决方案六:...你在数据库里不默认null或0吗?在代码里给他等于null或0就行了.就这一句也麻

利用XSLT把ADO记录集转换成XML

ado|xml|记录集|转换 由于XML(可扩展标记语言:eXtensible Markup Language)真正的平台无关性,它正在逐渐成为数据传输的主要介质.XML是一种自描述的语言,数据本身就已经包含了元数据,即关于数据本身的信息.例如:"孟子E章1757281793923net_lover1807581793923"这组数据,从字面很难看出它代表什么意思,也不清楚它有几个数据段组成,但是,如果用XML来做如下的描述,我们就可以清楚地看到每个数据段所代表的含义:  <Pe

xml-C# 如何将纯文本TXT转换成XML格式

问题描述 C# 如何将纯文本TXT转换成XML格式 想做一个小的demo 学习中遇到一点小问题 请大神指导 通过一个简单的转换 不求转换精准 解决方案 public partial class FrmTxtXml : Form { String txtContent = String.Empty; // public FrmTxtXml() { InitializeComponent(); } //打开txt文件 private void toolStripOpen_Click(object s

把sitemap 的节点写成treeview的结构时候,出现错误

问题描述 <?xmlversion="1.0"encoding="utf-8"?><siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"><siteMapNodeurl=""title="掌上就业系统"description="掌上就业系统"><siteMapNod