将数据库中的记录转换为XML文档
来源:互联网 发布:最大的二手房软件 编辑:程序博客网 时间:2024/05/17 17:16
因为XML的通用传输性好,在程序开发中很多地方都会用到XML文档,比如配置文件,数据传输文件,语言文件等等。一直以来觉得把数据库中的记录转换成一个XML文档对我来说很有难度,今天也是被项目的一个BUG逼急了,冷静下来并参考了同事的建议,终于完成了将数据库记录转换为XML文档的目的。
首先准备数据库Test2008,SQL脚本如下:
create table ClassCategory(ID int identity(1,1) not null,Class_ID varchar(50) not null,CreateOn datetime default getdate())alter table ClassCategoryadd ClassName varchar(200)insert into ClassCategory(Class_ID,ClassName)values('3167382','三一班');insert into ClassCategory(Class_ID,ClassName)values('3267382','三二班');select * from ClassCategoryCreate Table ClassInfo(ID int identity(1,1) not null,Class_ID varchar(50) not null,Class_Title varchar(Max) not null,Grade_ID varchar(50) not null,CreateOn datetime default getdate())insert into ClassInfo(Class_ID,Class_Title,Grade_ID)values('3167382','测试数据','3167382');insert into ClassInfo(Class_ID,Class_Title,Grade_ID)values('3267382','测试数据','3267382');insert into ClassInfo(Class_ID,Class_Title,Grade_ID)values('3267382','测试数据','3267382');insert into ClassInfo(Class_ID,Class_Title,Grade_ID)values('3267382','测试数据','3267382');insert into ClassInfo(Class_ID,Class_Title,Grade_ID)values('3267382','测试数据','3267382');insert into ClassInfo(Class_ID,Class_Title,Grade_ID)values('3267382','测试数据','3267382');insert into ClassInfo(Class_ID,Class_Title,Grade_ID)values('3267382','测试数据','3267382');select * from ClassInfoCreate Procedure GetClassCategoryasbeginselect * from ClassCategoryendcreate Proc GetClassInfoas beginselect * from ClassInfoend
需要实现的效果像这样的:
我封装了一个从数据库中获取数据的DAL:
public class XMLOperatoer { private static string ConnectionString = "Server=Liszt-PC//SQLExpress;database=Test2008;uid=sa;pwd=123"; public static DataTable GetSecondNode() { DataTable dt = MyBlog.SqlHelper.ExecuteDataset(ConnectionString, "GetClassCategory", null).Tables[0]; return dt; } public static DataTable GetThreedNode() { DataTable dt = MyBlog.SqlHelper.ExecuteDataset(ConnectionString, "GetClassInfo", null).Tables[0]; return dt; } }
首先需要创建一个XML文档,然后新建第二级的元素:
XmlDocument doc = new XmlDocument(); doc.LoadXml(""); DataTable dt = Liszt.DAL.XMLOperatoer.GetSecondNode(); foreach (DataRow item in dt.Rows) { XmlElement el = doc.CreateElement("Class"); el.SetAttribute("ID", item["ID"].ToString()); el.SetAttribute("Class_ID", item["Class_ID"].ToString()); el.SetAttribute("ClassName", item["ClassName"].ToString()); //el.InnerText = item["ClassName"].ToString(); doc.DocumentElement.AppendChild(el); } XmlNodeList nodesID = doc.SelectNodes("ClassInfo/Class//@Class_ID");
这样就创建好了第二级的元素,可以通过doc.InnerXml来查看生成的XML文档的内容。然后通过关联的Class_ID来创建第三层的元素:
//选择含有Class_ID属性的元素 XmlNodeList nodesID = doc.SelectNodes("ClassInfo/Class//@Class_ID"); DataTable dtThreed = Liszt.DAL.XMLOperatoer.GetThreedNode(); foreach (DataRow item in dtThreed.Rows) { for (int i = 0; i < nodesID.Count; i++) { if (((string)item["Class_ID"]) == nodesID.Item(i).Value) { XmlElement el = doc.CreateElement("Class"); el.SetAttribute("ID", item["ID"].ToString()); el.SetAttribute("Class_ID", item["Class_ID"].ToString()); el.SetAttribute("Class_Title", item["Class_Title"].ToString()); el.SetAttribute("Grade_ID", item["Grade_ID"].ToString()); el.SetAttribute("CreateOn", item["CreateOn"].ToString()); XmlNodeList list = doc.SelectNodes("ClassInfo/Class"); list.Item(i).AppendChild(el); } } }
这样就创建好了第三层元素了。
最后可以来看看结果:
Liszt"> 1" Class_ID="3238933" ClassName="三年级"> 1" Class_ID="3238933" Class_Title="三一班" Grade_ID="3238933" CreateOn="2011/3/29 22:47:23" /> 2" Class_ID="3238933" Class_Title="三二版" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" /> 5" Class_ID="3238933" Class_Title="三三版" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" /> 2" Class_ID="2267382" ClassName="二年级"> 3" Class_ID="2267382" Class_Title="二三班" Grade_ID="3238933" CreateOn="2011/3/29 22:47:23" /> 4" Class_ID="2267382" Class_Title="二五班" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" /> 6" Class_ID="2267382" Class_Title="二七班" Grade_ID="3238933" CreateOn="2011/3/29 22:47:23" /> 7" Class_ID="2267382" Class_Title="二九班" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" />
源代码下载
- 将数据库中的记录转换为XML文档
- 将数据库中的数据发布为XML文档
- 将XML字符串转换为XML文档
- 通过DOM4J将数据库的表转换为XML文档的实例
- c#使用XSLT将xml文档转换为html文档
- 将数据库数据转换为xml格式
- 用java语言将数据库中的数据表转换为xml文件的通用程序
- (010):将内存中的对象转换为XML
- 如何用C#将数据库中的记录制成XML
- 如何用C#将数据库中的记录制成XML
- 如何用C#将数据库中的记录制成XML
- 如何用C#将数据库中的记录制成XML
- 将XML文档写入数据库
- 将XML文档写入数据库
- 将Powerpoint文档转换为Word文档
- XML 包装模板:将 XML 文档转换为 Visual Basic 类
- php将数据库中的数据转换成xml格式的
- 将数据库中的数据导出为XML数据
- 探索Google App Engine背后的奥秘(4)- Google App Engine的架构
- 探索Google App Engine背后的奥秘(5)- Datastore的设计
- 阿里巴巴的笔试的一道题目
- 探索Google App Engine背后的奥秘(6)- 总结
- 插件: images and custom options,magento添加多图片,自定义选项custom options,catelog,分类的插件以及使用方法!!!
- 将数据库中的记录转换为XML文档
- amule与firefox4的关联
- 需找新的美猴王——约瑟夫环 猴王问题
- Android = Java?
- 一点牢骚
- MFC多线程
- stringstream的用法
- 转载:MFC程序最小化到系统托盘
- 解决“windows7内部版本7600此windows副本不是正版”