北落师门

让我们的生活更美好
[C#] 如何用C#将数据库中的记录制成XML


using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Diagnostics; 
using System.Web; 
using System.Web.Services; 
using System.Xml; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Text; 
using System.Xml.Xsl; 
using System.IO; 

namespace admin 

/// <summary> 
/// CreateXML 的摘要说明。 
/// </summary> 
/// 

[System.Web.Services.WebService(Namespace="http://./admin/createxml.asmx",Description="生成或更新星迷俱乐部中的xml文件")] 

public class CreateXML : System.Web.Services.WebService 

public CreateXML() 

//CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的 
InitializeComponent(); 
}
 

组件设计器生成的代码 

[WebMethod] 
public string CreateClubXMLByID(String ID) 

DateTime filenamedate
=DateTime.Now; 
CreatePath(
"..\\"+filenamedate.Year.ToString(),filenamedate.Month.ToString()+"_"+filenamedate.Day.ToString());//按时期生成相应的时期型文件夹 
string filename=Server.MapPath("..\\"+filenamedate.Year.ToString()+"\\"+filenamedate.Month.ToString()+"_"+filenamedate.Day.ToString()+"\\Club"+ID.Trim()+".xml"); 
XmlTextWriter PicXmlWriter 
= null
Encoding GB 
= Encoding.GetEncoding("GB2312"); 
PicXmlWriter 
= new XmlTextWriter (filename,GB); 

try 

string strConn=ConfigurationSettings.AppSettings["starclub"]; 

String SQLStatement
="SELECT * FROM club where id="+ID.ToString().Trim(); 
SqlConnection myConnection
= new SqlConnection(strConn); 
SqlDataAdapter myCommand 
= new SqlDataAdapter(SQLStatement,myConnection); 
DataSet myDataSet; 
myCommand.SelectCommand.CommandType
=CommandType.Text; 
myDataSet 
= new DataSet(); 
myCommand.Fill(myDataSet, 
"MyTable"); 

PicXmlWriter.Formatting 
= Formatting.Indented; 
PicXmlWriter.Indentation
= 6
PicXmlWriter.Namespaces 
= false
PicXmlWriter.WriteStartDocument(); 
//PicXmlWriter.WriteDocType("文档类型", null, ".xml", null); 
//PicXmlWriter.WriteComment("按在数据库中记录的ID进行记录读写"); 
PicXmlWriter.WriteProcessingInstruction("xml-stylesheet","type='text/xsl' href='../../xsl/1.xsl'") ; //写入用于解释的XSL文件名 
PicXmlWriter.WriteStartElement("","club",""); 
foreach(DataRow r in myDataSet.Tables[0].Rows) //依次取出所有行 

PicXmlWriter.WriteStartElement(
"","record",""); 
foreach(DataColumn c in myDataSet.Tables[0].Columns) //依次找出当前记录的所有列属性 

if ((c.Caption.ToString()!="pic")) 

PicXmlWriter.WriteStartElement(
"",c.Caption.ToString().Trim(),""); //写入字段名 
PicXmlWriter.WriteString(r[c].ToString().Trim()); //写入数据 
PicXmlWriter.WriteEndElement(); 
}
 
else 

PicXmlWriter.WriteStartElement(
"",c.Caption.ToString().Trim(),""); 
string [] pic=r[c].ToString().Trim().Split('|'); 
for (int i=0;i<pic.Length;i++


if (pic[i].Trim()!=""//数据库中图片字段的插入格式为: 文件名,高,宽| 以此类推. 例如 no.jpg,132,142| 

PicXmlWriter.WriteStartElement(
"",c.Caption.ToString().Trim()+"s",""); 
string [] picstr=pic[i].Split(','); 
PicXmlWriter.WriteStartElement(
"","picstr",""); 
PicXmlWriter.WriteString(picstr[
0].Trim().Trim()); 
PicXmlWriter.WriteEndElement(); 

PicXmlWriter.WriteStartElement(
"","height",""); 
PicXmlWriter.WriteString(picstr[
1].Trim().Trim()); 
PicXmlWriter.WriteEndElement(); 

PicXmlWriter.WriteStartElement(
"","width",""); 
PicXmlWriter.WriteString(picstr[
1].Trim().Trim()); 
PicXmlWriter.WriteEndElement(); 

PicXmlWriter.WriteStartElement(
"","comment",""); 
PicXmlWriter.WriteString(pic[
++i].Trim().Trim()); 
PicXmlWriter.WriteEndElement(); 
PicXmlWriter.WriteEndElement(); 
}
 
else 

i
++
}
 

}
 
PicXmlWriter.WriteEndElement(); 

}
 
}
 
PicXmlWriter.WriteEndElement(); 
}
 

PicXmlWriter.WriteEndElement(); 
PicXmlWriter.Flush(); 

}
 
catch (Exception e) 

Console.WriteLine (
"异常:{0}", e.ToString()); 
}
 

finally 

Console.WriteLine(); 
Console.WriteLine(
"对文件 {0} 的处理已完成。", ID); 
if (PicXmlWriter != null
PicXmlWriter.Close(); 
//关闭编写器 
if (PicXmlWriter != null
PicXmlWriter.Close(); 
}
 
return filenamedate.Year.ToString()+"\\"+filenamedate.Month.ToString()+"_"+filenamedate.Day.ToString()+"\\Club"+ID.Trim()+".xml"
}
 


public void CreatePath(string yearpath,string monthdaycurrent) 

string path=Server.MapPath(""); 
if (Directory.Exists(path+yearpath)) 

if (Directory.Exists(path+yearpath+monthdaycurrent)) 


}
 
else 

Directory.CreateDirectory(path
+"\\"+yearpath+"\\"+monthdaycurrent); 
}
 
}
 
else 

Directory.CreateDirectory(path
+"\\"+yearpath+"\\"+monthdaycurrent); 
}
 

}
 
 
 

posted on 2005-04-08 21:20  北落师门  阅读(365)  评论(0编辑  收藏  举报