欢迎光临
我们一直在努力

一种从数据库利用xml创建树型目录的方法(C#)(一-.NET教程,XML应用

建站超值云服务器,限时71元/月

引言:

无线项目开发中,项目需求要对无线的服务项目追加额外参数,所以需要解析那边的xml数据(如何获得xml数据我已经在其它的文章中写过了),然后再按照一定的规律存到本地库(无线那边提供的xml数据需要通过一定的转化过程才能得到我们想要的东西)并重新构造一个xml树型目录出来。本文便要提供一种简便的方法实现从数据库生成xml文档,进而用xslt解析成树型目录的方案。

设计方案:

一、数据库

 

mobile_servicetype 服务类型

field

datatype

default

description

servicetypeid

int

identity

id

parentid

int

0

父类型id

metoneservicetypeid

int

0

类型id

servicetypename

int

0

服务类型名称

一点说明:这个表存放的是服务类型名称及类型之间的关系的,metoneservicetypeid是当前信息的id,这里没有使用servicetypeid 作为当前节点的id是因为当前节点id是不可以随便改变的,而且这个id决定了收费标准,所以独立设定此字段的,不过从技术层面来讲设置谁为当前节点并没有什么不同,parentid是类型的父类型id。

二、存储过程:

/**********************************

功能:根据一定条件读取类型记录

作者:rexsp

创建日期:2004-03-24

修改者:

修改日期:

**********************************/

alter procedure getmobileservicetype

(

@action nvarchar(20)=complex,

@servicetypeid int=-1,

@servicetypename nvarchar(50)=null,

@metoneservicetypeid int=-1,

@parentid int=-1

)

as

set nocount on

if(@action=complex)

begin

–省略n行与本篇无关的代码

end

if(@action=gettree)

begin

select

metoneservicetypeid,

servicetypename,

parentid,

url=mobilesetting.aspx?id=+cast(metoneservicetypeid as nvarchar(4))

from [mobile_servicetype]

end

一点解释:存储过程有两部分,前半部分是为了一个复杂查询设计的,后面的是构建xml树设置的。这里是通过一个@actoin变量来控制跳入哪个部分的,另外这里的代码我简化处理了,真实环境中会根据另外一个表的设置来动态生成不同的xml树的。

三、com层代码就列了,总体层次是三层架构,这我在专栏中也有提过。这里只给出几个相关的com层类的接口和功能说明。

mobileservicetypecollection提供各种搜索条件得出的数据集,里面有一个方法,返回一个dataset,调用的sp就是上面提供的那个:

/// <summary>

/// 获取生成美类型列表相关数据

/// </summary>

/// <param name="dataset">类型列表数据集</param>

/// <returns>成功返回true,失败返回false;</returns>

public bool getmetonetree(out dataset dataset)

{

//创建adapter对象

sqldataadapter dataadapter = null;

//创建data对象和params

database data = new database("town");

sqlparameter[] prams ={data.makeinparam("@action",sqldbtype.nvarchar,20,"gettree")};

try

{

data.runproc("getmobileservicetype", prams, out dataadapter);

dataset = new dataset();

dataadapter.fill(dataset,"tree");

dataadapter.dispose();

return true;

}

catch (exception ex)

{

dataset = null;

error.log("town", ex.tostring());

return false;

}

finally

{

dataadapter.dispose();

data.close();

data.dispose();

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一种从数据库利用xml创建树型目录的方法(C#)(一-.NET教程,XML应用
分享到: 更多 (0)