许多读者经常询问一个问题那就是在将DataSet的内容写成XML时如何格式化字段数据最常见的需求就是希望日期时间值与数值数据能够以所需的格式呈现于XML中欲达此目的可以采用下列两种作法
◆使用XmlConvert类
◆将一个XSLT转换套用至DataSet数据的XML表示
程序范例
图 所示是程序范例CH_DemoFormcs的执行画面我们发现从DataSet写成XML的日期与薪资字段数据皆已采用我们所要求的格式基本上本范例是利用XmlConvert类来完成字段的格式化操作相关程序代码编写在按钮的Click事件处理函数中列示如下
图
// 导入命名空间
using SystemXml;
using SystemDataSqlClient;
using SystemIO;
private void btnWriteDataSetToXml_Click(object sender EventArgs e)
{
string myXmlFile = @C:\DataSetOutputXmlxml;
try
{
// 建立一个 XmlTextReader 对象来读取 XML 数据
using(XmlTextReader myXmlReader =
new XmlTextReader(dsGetXml() XmlNodeTypeElement null))
{
// 使用指定的文件与编码方式来建立一个 XmlTextWriter 对象
using(SystemXmlXmlTextWriter myXmlWriter =
new SystemXmlXmlTextWriter(myXmlFile EncodingUTF))
{
myXmlWriterFormatting = FormattingIndented;
myXmlWriterIndentation = ;
myXmlWriterWriteStartDocument();
string elementName = ;
// 解析并显示每一个节点
while(myXmlReaderRead())
{
switch(myXmlReaderNodeType)
{
case XmlNodeTypeElement:
myXmlWriterWriteStartElement(myXmlReaderName);
elementName = myXmlReaderName;
break;
case XmlNodeTypeText:
switch(elementNameToLower())
{
case 出生日期:
// 要求转换成字符串的日期时间数据采用自定义的格式字符串来格式化
myXmlWriterWriteString(XmlConvertToDateTime(myXmlReaderValue
XmlDateTimeSerializationModeLocal)ToString(
yyyy 年 MMMM dd 号 dddd时间 HH 点 mm 分 ss 秒));
break;
case 雇用日期:
case 加薪日期:
// 要求转换成字符串的日期时间数据采用简短日期模式
myXmlWriterWriteString(XmlConvertToDateTime(myXmlReaderValue
XmlDateTimeSerializationModeLocal)ToString(d));
break;
case 起薪:
case 目前薪资:
// 要求转换成字符串的薪资值采用货币格式
myXmlWriterWriteString(XmlConvertToDecimal(
myXmlReaderValue)ToString(c));
break;
default:
myXmlWriterWriteString(myXmlReaderValue);
break;
}
break;
case XmlNodeTypeEndElement:
myXmlWriterWriteEndElement();
break;
}
}
}
}
// 读取所输出的 Xml 文件并将其内容显示在 TextBox 文本框中
txtXmlResultText = FileReadAllText(myXmlFile);
}
catch(Exception ex)
{
MessageBoxShow(exMessage);
}
}