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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
alter table ClassCategory add ClassName varchar(200)
insert into ClassCategory(Class_ID,ClassName)values('3167382','三一班'); insert into ClassCategory(Class_ID,ClassName)values('3267382','三二班');
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');
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); } } }
首先准备数据库Test2008,SQL脚本如下:
create table ClassCategory ( ID int identity(1,1) not null, Class_ID varchar(50) not null, CreateOn datetime default getdate() )
select * from ClassInfo
Create Procedure GetClassCategory as begin select * from ClassCategory end
create Proc GetClassInfo as begin select * from ClassInfo end
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) {
//el.InnerText = item["ClassName"].ToString(); doc.DocumentElement.AppendChild(el); } XmlNodeList nodesID = doc.SelectNodes("ClassInfo/Class//@Class_ID");
首先需要创建一个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());
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() )
需要实现的效果像这样的:
我封装了一个从数据库中获取数据的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; }
</ClassInfo>
public static DataTable GetThreedNode() {
DataTable dt = MyBlog.SqlHelper.ExecuteDataset(onnectionString, "GetClassInfo", null).Tables[0]; return dt; } }
这样就创建好了第二级的元素,可以通过doc.InnerXml来查看生成的XML文档的内容。然后通过关联的Class_ID来创建第三层的元素:
//选择含有Class_ID属性的元素 XmlNodeList nodesID = doc.SelectNodes("ClassInfo/Class//@Class_ID");
将数据库中的记录转换为 XML文档
因为XML的通用传输性好,在程序开发中很多地方都会用到XML文档,比如配置文件,数据传输文件,语言文件等等。一直以来觉得把数据 库中的记录转换成一个XML文档对我来说很有难度,今天也是被项目的一个BUG逼急了,冷静下来并参考了同事的建议,终于完成了将数据 库记录转换为XML文档的目的。
这样就创建好了第三层元素了。
最后可以来看看结果:
<ClassInfo Name="Liszt"> <Class ID="1" Class_ID="3238933" ClassName="三年级"> <Class ID="1" Class_ID="3238933" Class_Title="三一班" Grade_ID="3238933" CreateOn="2011/3/29 22:47:23" /> <Class ID="2" Class_ID="3238933" Class_Title="三二版" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" /> <Class ID="5" Class_ID="3238933" Class_Title="三三版" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" /> </Class> <Class ID="2" Class_ID="2267382" ClassName="二年级"> <Class ID="3" Class_ID="2267382" Class_Title="二三班" Grade_ID="3238933" CreateOn="2011/3/29 22:47:23" /> <Class ID="4" Class_ID="2267382" Class_Title="二五班" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" /> <Class ID="6" Class_ID="2267382" Class_Title="二七班" Grade_ID="3238933" CreateOn="2011/3/29 22:47:23" /> <Class ID="7" Class_ID="2267382" Class_Title="二九班" Grade_ID="3267382" CreateOn="2011/3/29 22:47:23" /> </Class>
相关文档
最新文档