近工作涉及到将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 { strXml.AppendLine(" for (int j = 0; j { strXml.AppendLine(" " dt.Rows[i][j] "" dt.Columns[j].ColumnName ">"); } strXml.AppendLine(" } strXml.AppendLine(" return strXml.ToString(); } |
下面看下生成XML文件的效果:
代码如下 | 复制代码 |
|
如果你使用DataSet,可以把DataSet转成Datatable,再使用上面的方法就可以了。
数据转换xml文件
从数据库的查询结果的数据保存到XML文件
代码如下 | 复制代码 |
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 |
更多详细内容请查看:https://www.111cn.net/net/37/38865.htm
恋爱进行时九游版
恋爱进行时九游版是一款以模拟恋爱玩法为核心的角色扮演手游,精
皇室对决fr(Null’s Royale)
皇室对决fr,即皇室战争的私服变态版本,在该版本中玩家能够拥
养了个猫联机版游戏
养了个猫小游戏一个猫咪主题的模拟经营类型的手游,在游戏中我那
模拟山羊收获日小米版
模拟山羊收获日小米版是一个极其魔性的手机游戏,在游戏中玩家将
女配逆袭之素衣
女配逆袭之素衣是一款恋爱养成冒险的一款游戏,可以角色扮演,在