`
zzc125
  • 浏览: 13407 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

将数据库中的记录转换为XML文档

阅读更多

因为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

需要实现的效果像这样的:

22222

我封装了一个从数据库中获取数据的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="&lt;span style=" color:>Liszt"&gt;
    <class id="&lt;span style=" color:>1" Class_ID="<span style="color: #8b0000">3238933</span>" ClassName="<span style="color: #8b0000">三年级</span>"&gt;
        <class id="&lt;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>" /&gt;
        <class id="&lt;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>" /&gt;
        <class id="&lt;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>" /&gt;
    </class><class id="&lt;span style=" color:>2" Class_ID="<span style="color: #8b0000">2267382</span>" ClassName="<span style="color: #8b0000">二年级</span>"&gt;
        <class id="&lt;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>" /&gt;
        <class id="&lt;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>" /&gt;
        <class id="&lt;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>" /&gt;
        <class id="&lt;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>" /&gt;
    </class></class></class></class></class></class></class></class></classinfo>

源代码下载
分享到:
评论

相关推荐

    XML文档到关系数据库的直接转换

    1. 将XML文档视为单一表或一系列表对象,便于直接映射至关系数据库。 2. 基于XML文档的对象树模型,其中元素对应对象或属性,适用于面向对象或树状数据库,亦可通过对象-关系映射技术转至关系数据库。 然而,这两种...

    XML与数据库相互转换

    - "Convertxml":可能是实现XML与数据库转换的代码文件,可能使用了.NET中的XML和数据库相关类库。 总结来说,"XML与数据库相互转换"是一个关键的IT技能,涉及数据的读取、解析、操作和存储。在VS2003中,开发者...

    《使用kettle把XML文档转换成数据表结构》附件

    在这个场景中,我们将探讨如何使用Kettle将XML文档转换为数据表结构。 XML是一种通用的数据交换格式,广泛用于存储和传输结构化信息。然而,很多数据库和分析工具更倾向于以表格形式存储数据。Kettle提供了解决这个...

    XML文档到关系数据库的转换

    1. **词法分析**:根据XML的BNF(Backus-Naur Form,巴科斯范式)规则,设计词法分析程序来识别XML文档中的元素和属性。 - **正规表达式**:利用正规表达式来定义元素和属性的模式。 - **状态转换图**:设计状态...

    将关系型数据库MySQL存储数据转换为XML文件的实现

    3. 将字段值填充到XML元素中,构建完整的XML文档结构。 4. 输出XML文件,完成数据转换。 以图2-1所示的userinfo表为例,转换后的XML文件内容可能如下: ```xml &lt;?xml version="1.0" encoding="utf8"?&gt; &lt;用户基本...

    数据库转化为xml文件

    - XSLT(Extensible Stylesheet Language Transformations)是一种强大的转换语言,可以直接将XML文档转换成其他XML文档或HTML。 - ETL工具(Extract, Transform, Load)如Apache NiFi或Informatica也可以用于从...

    ADONET实现XML文档与关系数据库转换的方法

    ADONET实现XML文档与关系数据库转换的方法

    XML文档数据库数据之间的转换原理及转换对象

    标题和描述概述了关于XML文档数据库数据之间的转换原理及转换对象的研究,这涉及到XML与关系数据库之间的数据交换机制。文章作者刘刚,来自哈尔滨银行双鸭山分行,同时是同济大学软件工程硕士在读研究生,他深入探讨...

    access数据库数据转换为xml文件

    3. **XML数据结构**:Access中的表在转换为XML后,每个字段对应一个XML元素,每条记录成为XML文档的一个元素节点。主键字段通常作为XML元素的唯一标识,其他字段作为属性或子元素。 4. **注意事项**: - 数据类型...

    利用XSU实现Oracle数据库与XML文档转换.pdf

    1. **XML到关系数据的转换**:XSU能够接收XML文档,并根据文档中的结构将其转换为数据库中的表格形式,以便存储在Oracle数据库中。这使得XML数据能够无缝地融入到关系型数据库环境中,便于管理和查询。 2. **关系...

    xml_database.rar_xml_xml databa_xml 数据库_xml数据_数据库 XML

    这通常需要一个转换过程,例如使用XSLT(Extensible Stylesheet Language Transformations)将数据从数据库记录格式转换为XML文档。 3. **生成XML文件**:将转换后的XML数据写入文件,形成最终的XML输出。 XML...

    Kettle数据导出为XML文件

    在描述中提到的博客链接虽然没有提供具体细节,但可以推测博主可能分享了如何使用Kettle创建一个转换,该转换将数据从各种来源(如数据库、CSV文件等)提取出来,并将其格式化为XML文件。这种操作在数据交换、数据...

    xml与Access数据库的转换案例

    XML Schema可以定义数据模型,确保XML文档符合特定的结构和规则,有助于数据的验证和转换。 对于WebSites这个文件夹,可能是包含了一些实际的网站数据,例如用户信息、文章、评论等,这些数据可能以XML格式存储,也...

    Java实现XML文档到word文档转换

    为了确保转换后的Word文档能够保留原文档中的样式信息(如字体类型、字体大小和颜色),需要在XML文档中包含相应的样式信息。以下是一个改进后的XML文档示例: ```xml &lt;?xml version="1.0" encoding="GB2312"?&gt; ...

    xml与数据库间转换

    在IT领域,XML与数据库之间的转换是常见的操作,特别是在需要将结构化数据在不同系统间传输或者从静态XML文档中提取数据时。本篇文章将深入探讨XML与数据库间的转换,以及如何利用XML生成Dataset来处理数据。 首先...

    access数据文件向xml转化文件

    总之,将Access数据文件转换为XML数据是一个涉及数据库连接、查询、数据序列化和文件操作的过程。了解这些基本概念和技术,对于.NET开发者来说是非常重要的。如果你遇到任何问题,记得查看提供的“ReadMe”文件,它...

    从xml文档中读取和写入数据库的例题

    总结来说,从XML文档中读取数据并写入数据库,以及从数据库中读取数据并输出到XML,是数据集成和迁移中的常见任务。通过理解XML的结构和解析方式,以及熟练掌握数据库操作,开发者可以有效地实现这种数据交互。在...

    数据库数据生成xml

    在将数据库数据转换为XML的过程中,通常涉及以下步骤: 1. **连接数据库**:首先,我们需要连接到包含所需数据的数据库。这可以通过编程语言如Java、Python或PHP中的数据库驱动程序实现,例如JDBC(Java Database ...

    XML文档到关系数据库的直接转换.doc

    XML文档到关系数据库的直接转换

    xml 数据库教程 xml语法

    - **基于表格的映射**:将XML文档中的元素映射为数据库表中的列,属性映射为列的值。 - **关系-对象映射**:通过对象关系映射(ORM)技术将XML文档转换为对象模型,再将这些对象映射到关系型数据库中。 - **5.2 ...

Global site tag (gtag.js) - Google Analytics