繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)

asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)

2007-09-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:程序段中对语句作了说明。主要使用XMLWriter类进行XML文件生成。 下面这是由关系数据库生成相应XML文件过程。由于XML只是中间件,所以忽略了Schema或者DTD。 1 private void Page_Load(object sender, Sy...

程序段中对语句作了说明。主要使用XMLWriter类进行XML文件生成。

下面这是由关系数据库生成相应XML文件过程。由于XML只是中间件,所以忽略了Schema或者DTD。

1 private void Page_Load(object sender, System.EventArgs e)

2 {

3 // 在此处放置用户代码以初始化页面

4 //基本信息定义

5 String strTableName="systypes";

6 String strConnection="server=suntears;user id=sa;password=041210;database=webapplication1_db";

7 String strSql="select * from "+strTableName;

8 SqlConnection objConn=new SqlConnection(strConnection);

9 SqlDataAdapter objAdapter=new SqlDataAdapter(strSql,objConn);

10 DataSet objDSet=new DataSet();

11 objAdapter.Fill(objDSet,"temp");

12 XMLTextWriter objXMLWriter;

13 String strtemp1=Request.PhysicalApplicationPath;

14 String strpath=strtemp1+"qiming.XML";

15 //初始化XMLWriter.用此类写XML文件

16 objXMLWriter=new XMLTextWriter(strpath,null);

17 //创建开头的XML声明

18 objXMLWriter.WriteStartDocument();

19 //创建根元素XML1

20 objXMLWriter.WriteStartElement("XML1");

21 //表名为元素名,字段名为属性,表中的记录为属性的值

22 for(int i=0;i

23 {

24 objXMLWriter.WriteStartElement("menu");

25 for(int j=0;j

26 {

27 //写入属性

28 objXMLWriter.WriteAttributeString(objDSet.Tables["temp"].Columns[j].ColumnName,objDSet.Tables["temp"].Rows[i][j].ToString());

29 }

30 objXMLWriter.WriteEndElement();

31 }

32 objXMLWriter.WriteEndElement();

33 objXMLWriter.WriteEndDocument();

34 //用close方法关闭文件,否则文件将被锁定

35 objXMLWriter.Close();

36 // 在页面上显示结果

37 string strXMLResult;

38 StreamReader objSR = File.OpenText(strpath);

39 strXMLResult = objSR.ReadToEnd();

40 objSR.Close();

41 Response.Write("

" + Server.HTMLEncode(strXMLResult) + "
");

42 }

下面是通过上面程序生成的XML文件生成关系数据库的代码

1 private void Page_Load(object sender, System.EventArgs e)

2 {

3 // 在此处放置用户代码以初始化页面

4 //基本信息定义

5 int cx=1;

6 string strConn="server=suntears;user id=sa;password=;database=XML_example";

7 string strappstr=Request.PhysicalApplicationPath;

8 string strpath=strappstr+"qiming.XML";

9 string strtablename="XML1";

10 string strCreatetable="create table "+strtablename+"(";

11 XMLTextReader objXMLReader=new XMLTextReader(strpath);

12 SqlConnection objConn=new SqlConnection(strConn);

13 SqlCommand objCommand;

14 SqlDataAdapter objAdapter;

15 DataSet objDSet=new DataSet();

16 DataRow objrow;

17 XMLNodeType objNodeType;

18 //采用XMLReader类进行XML文件访问操作

19 //XMLReader采用拉(pull)模式。因此通过Read()方法迭代各个节点

20 while(objXMLReader.Read())

21 {

22 objNodeType=objXMLReader.NodeType;

23 //根据节点类型进行不同操作

24 switch(objNodeType)

25 {

26 //XML文件开头的声明

27 case XMLNodeType.XMLDeclaration:

28 Response.Write("11111"+objXMLReader.Name+"
");

29 break;

30 //正常节点类型

31 case XMLNodeType.Element:

32 //根据属性个数判断是否是根元素

33 if(objXMLReader.AttributeCount>0)

34 {

35 //cx作为标志位。第一次访问非根元素节点时根据元素结构生成数据库

36 if(cx==1)

37 {

38 while(objXMLReader.MoveToNextAttribute())

39 {

40 strCreatetable=strCreatetable+objXMLReader.Name+" varchar(50), ";

41 }

42 strCreatetable=strCreatetable+")";

43 objCommand=new SqlCommand(strCreatetable,objConn);

44 objConn.Open();

45 objCommand.ExecuteNonQuery();

46 objConn.Close();

47 objAdapter=new SqlDataAdapter("select * from "+strtablename,objConn);

48 objAdapter.Fill(objDSet,strtablename);

49 objXMLReader.MoveToFirstAttribute();

50 //更改标志为cx数值

51 cx=0;

52 }

53 //将XML文件中数据转存到DataSet对象中

54 objrow=objDSet.Tables[strtablename].NewRow();

55 objXMLReader.MoveToFirstAttribute();

56 for(int j=0;j

57 {

58 objrow[j]=objXMLReader.Value.ToString();

59 objXMLReader.MoveToNextAttribute();

60 }

61 objDSet.Tables[strtablename].Rows.Add(objrow);

62 }

63 break;

64 }

65 }

66 //显示转存后的数据表

67 DataGrid1.DataSource=objDSet.Tables[strtablename];

68 DataGrid1.DataBind();

69 }将数据更新到数据库的代码没有编写,自己弄吧^_^

责任编辑:admin
相关文章