当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)

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

点击次数:31 次 发布日期:2008-11-26 11:27:54 作者:源代码网
源代码网推荐      程序段中对语句作了说明。主要使用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<objDSet.Tables["temp"].Rows.Count;i++)
源代码网推荐  23 {
源代码网推荐  24 objXmlWriter.WriteStartElement("menu");
源代码网推荐  25 for(int j=0;j<objDSet.Tables["temp"].Columns.Count;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("<pre>" + Server.HtmlEncode(strXmlResult) + "<pre>");
源代码网推荐  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+"<br>");
源代码网推荐  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<objXmlReader.AttributeCount;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 }将数据更新到数据库的代码没有编写,自己弄吧^_^
源代码网推荐  
源代码网推荐  http://suntears.cnblogs.com/archive/2006/06/02/416207.html
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华