近工作涉及到将Object转化为XML的数据格式。再网上找了一些资料。现在在这里总结一下目前使用到的方法
主要转换代码如下:
代码如下 | 复制代码 |
public static Stream TransforToXMLFormat(object obj)
|
十分简单地使用了.Net的反射机制。生成出来的XML效果可以接受。重点要注意的几点:
1. 类必须要有Name这个属性否则转化会报错!
2. 使用[XmlAttribute]放于Name上面,即:
代码如下 | 复制代码 |
[XmlAttribute] |
可以将Name变成XML的属性而不是XML的元素,即:
代码如下 | 复制代码 |
|
而不是:
代码如下 | 复制代码 |
|
3. 想要将属性输出为XML的元素,属性必须是public的。
4. 输出是使用了List<>,若想改变List里面每个元素的类名需要在List<>上面加上[XmlElement(ElementName="想要改变的名字")]即:
代码如下 | 复制代码 |
[XmlElement(ElementName="想要改变的名字")] |
附加将Hashtable里面的值转化成List的操作
代码如下 | 复制代码 |
List |
DataTable转成XML文件
数据库表position有三个字段:
字段名 字段类型
position_id int
position_name varchar
position_desc varchar
下面是Datatable转XML的生成源码:
代码如下 | 复制代码 |
protected void Page_Load(object sender, EventArgs e) { //通过数据访问层把position读取到Datatable BizRules.PersonnelDAL pl = new PersonnelDAL(); DataTable dt = pl.Getposition(); StringBuilder str = new StringBuilder(); str.Append(DataTableToXml(dt)); this.CreateXml(str.ToString(), "test.xml"); Response.Write("生成test.xml成功"); } /// /// 生成文件 /// /// /// public void CreateXml(string val, string filename) { UnicodeEncoding ucode = new UnicodeEncoding(); StreamWriter sw = new StreamWriter(Server.MapPath(filename)); sw.WriteLine(""); sw.WriteLine(val); sw.Close(); sw.Dispose(); } /// /// 转换成XML格式字符串 /// /// /// public string DataTableToXml(DataTable dt) { StringBuilder strXml = new StringBuilder(); strXml.AppendLine(" for (int i = 0; i < dt.Rows.Count; i ) { strXml.AppendLine(" for (int j = 0; j < dt.Columns.Count; j ) { strXml.AppendLine(" <" dt.Columns[j].ColumnName ">" dt.Rows[i][j] "" dt.Columns[j].ColumnName ">"); } strXml.AppendLine(" } strXml.AppendLine(" return strXml.ToString(); } |
下面看下生成XML文件的效果:
代码如下 | 复制代码 |
如果你使用DataSet,可以把DataSet转成Datatable,再使用上面的方法就可以了。
数据转换xml文件
从数据库的查询结果的数据保存到XML文件
代码如下 | 复制代码 |
<%@ Import Namespace="System.Data" %> Sub Page_Load(Sender As Object, E As EventArgs) Dim strConnection As String strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; " & _ objConnection = New OledbConnection(strConnection) objAdapter.Fill(objDataSet, "Employees") objDataSet.WriteXml(Server.MapPath("Employee2.xml")) End Sub |
更多详细内容请查看:http://www.111com.net/net/37/38865.htm