C#中将DataSet的内容写成XML
许多读者经常询问一个问题 那就是在将DataSet的内容写成XML时 如何格式化字段数据 最常见的需求 就是希望日期时间值与数值数据能够以所需的格式呈现于XML中 欲达此目的 可以采用下列两种作法
◆使用XmlConvert类 ◆将一个XSLT转换套用至DataSet数据的XML表示
程序范例
图 所示是程序范例CH _DemoForm cs的执行画面 我们发现 从DataSet写成XML的日期与薪资字段数据皆已采用我们所要求的格式 基本上 本范例是利用XmlConvert类来完成字段的格式化操作 相关程序代码编写在按钮的Click事件处理函数中 列示如下
图
// 导入命名空间 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 UTF )){myXmlWriter Formatting = Formatting Indented;myXmlWriter Indentation = ;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);}}
lishixinzhi/Article/program/net/201311/13105