因为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 ClassCategory
add ClassName varchar(200)
insert into ClassCategory(Class_ID,ClassName)values('3167382','三一班');
insert into ClassCategory(Class_ID,ClassName)values('3267382','三二班');
select * from ClassCategory
Create 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 ClassInfo
Create Procedure GetClassCategory
as
begin
select * from ClassCategory
end
create Proc GetClassInfo
as
begin
select * from ClassInfo
end
需要实现的效果像这样的:
我封装了一个从数据库中获取数据的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("<classinfo name='\"Liszt\"'></classinfo>");
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
这样就创建好了第三层元素了。
最后可以来看看结果:
<classinfo name="<span style=" color:>Liszt">
<class id="<span style=" color:>1" Class_ID="<span style="color: #8b0000">3238933</span>" ClassName="<span style="color: #8b0000">三年级</span>">
<class id="<span style=" color:>1" Class_ID="<span style="color: #8b0000">3238933</span>" Class_Title="<span style="color: #8b0000">三一班</span>" Grade_ID="<span style="color: #8b0000">3238933</span>" CreateOn="<span style="color: #8b0000">2011/3/29 22:47:23</span>" />
<class id="<span style=" color:>2" Class_ID="<span style="color: #8b0000">3238933</span>" Class_Title="<span style="color: #8b0000">三二版</span>" Grade_ID="<span style="color: #8b0000">3267382</span>" CreateOn="<span style="color: #8b0000">2011/3/29 22:47:23</span>" />
<class id="<span style=" color:>5" Class_ID="<span style="color: #8b0000">3238933</span>" Class_Title="<span style="color: #8b0000">三三版</span>" Grade_ID="<span style="color: #8b0000">3267382</span>" CreateOn="<span style="color: #8b0000">2011/3/29 22:47:23</span>" />
</class><class id="<span style=" color:>2" Class_ID="<span style="color: #8b0000">2267382</span>" ClassName="<span style="color: #8b0000">二年级</span>">
<class id="<span style=" color:>3" Class_ID="<span style="color: #8b0000">2267382</span>" Class_Title="<span style="color: #8b0000">二三班</span>" Grade_ID="<span style="color: #8b0000">3238933</span>" CreateOn="<span style="color: #8b0000">2011/3/29 22:47:23</span>" />
<class id="<span style=" color:>4" Class_ID="<span style="color: #8b0000">2267382</span>" Class_Title="<span style="color: #8b0000">二五班</span>" Grade_ID="<span style="color: #8b0000">3267382</span>" CreateOn="<span style="color: #8b0000">2011/3/29 22:47:23</span>" />
<class id="<span style=" color:>6" Class_ID="<span style="color: #8b0000">2267382</span>" Class_Title="<span style="color: #8b0000">二七班</span>" Grade_ID="<span style="color: #8b0000">3238933</span>" CreateOn="<span style="color: #8b0000">2011/3/29 22:47:23</span>" />
<class id="<span style=" color:>7" Class_ID="<span style="color: #8b0000">2267382</span>" Class_Title="<span style="color: #8b0000">二九班</span>" Grade_ID="<span style="color: #8b0000">3267382</span>" CreateOn="<span style="color: #8b0000">2011/3/29 22:47:23</span>" />
</class></class></class></class></class></class></class></class></classinfo>
源代码下载
分享到:
相关推荐
XML文档到关系数据库的直接转换 论文参考
ADONET实现XML文档与关系数据库转换的方法
XML文档到关系数据库的直接转换
论XML文档数据库数据之间的转换原理及转换对象。
举例说明了DTD与XML文档的关系、CSS与XML文档的关系、XSL与XML文档的关系。以及ACCESS数据库表中数据直接转换为网页的步骤,ACCESS数据库表中数据直接转换为XML文档的步骤。
XML文档到关系数据库的转换,通用类型的转换算法
使用kettle把XML文档转换成数据表结构 blog中的示例附件,需要请下载学习!
通过给XML文档树做标志,将映射算法转换后的数据放到两张预先定义结构的表进行存储。给出了逻辑数据模型、详细设计、映射算法和实验。实验结果表明,该方法能有效地保持XML文档的结构,能够对存储的数据进行语义检索...
利用XSU实现Oracle数据库与XML文档转换.pdf
就是在.net的环境下把access数据库转化为xml数据。具体环境和要求请阅读.readme文档
很多数据的存储都是在txt文档,或者数据库上,这个小工具可以将txt格式的数据库转换为xml类型的数据,然后在我们的程序中使用。注意,需要稍微修改一下代码,思路是很好的!
该文档主要详细描述了如何利用Dom4j技术、cglib技术,将xml存到数据库,具有一定的灵活性,例如表都不需要建,字段属性这些都是根据xml文件里的属性和值来确定的,当然这不是最精简的,还可以改进,相信自己用了之后...
本论文简要的探讨了XML和数据库之间的关系,同时列出一些可以使用数据库处理XML文档的软件...虽然这里不打算详尽地介绍这些软件,但是笔者希望它能够描述使用数据库处理XML文档中的主要部分。这里有点偏向与关系数据库;
Db2Doc 是一个能将数据库结构导出为文档的工具! 支持Oracle、SqlServer、Mysql、PostgreSql、SQLite、Db2等常用的数据库,支持word、excel、pdf、html、xml、markdown等文档格式的导出。
采用JAVA 语言,实现了将HTML 文档中的表格转换成XML 文档的系统。另外,在基于XML 语言和web 数据库的一般策略的基础之上,分析了基于XML 的数据库交换数据的安全需求。同时,介绍了XML 安全服务标准和针对XML 数据...
《精通XML——基础概念、核心技术与典型案例》书中所带光盘的各章例程以及数据库 第1章:XML的特征及应用场合简介 第2章:XML语法 第3章:XML名称空间 第4章:XML数据结构 第5章:XML路径查询技术 第6章:应用:...
一种XML数据与关系数据库相互转换的解决方案
为了把XML文档中的数据保存到数据库中,需要先分析XML文档结构,然后创建保存数据的表 用PL/SQL编写存储过程解析XML文档,并将数据插入到表中,使用内置包XMLPARSER和XMLDOM来解析和构造XML DOM对象 编写存储过程把...
而 XSLT(XSLTransformations)就是把某一XML文档转换为其他格式的实际语言。 XSLT 是什么类型的语言?——分析和概述 + ZDNET CHINA 特稿: XSLT初步 WSDL 编辑器,WSDL就是描述XML Web服务的标准XML格式,WSDL由...