As declarações são explicadas na seção do programa. A classe XmlWriter é usada principalmente para geração de arquivos XML.
A seguir está o processo de geração do arquivo XML correspondente a partir do banco de dados relacional. Como XML é apenas middleware, Schema ou DTD são ignorados.
1 privado void Page_Load (remetente do objeto, System.EventArgs e)
2 {
3 //Coloque aqui o código do usuário para inicializar a página
4 //Definição de informação básica
5 String strTableName="systypes";
6 String strConnection="servidor=suntears;id do usuário=sa;senha=041210;banco de dados=webapplication1_db";
7 String strSql="selecione * de "+strTableName;
8 SqlConnection objConn=new SqlConnection(strConnection);
9 SqlDataAdapter objAdapter=novo 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 //Inicialize XmlWriter Use esta classe para escrever arquivos XML.
16 objXmlWriter = novo XmlTextWriter (strpath, null);
17 //Cria a declaração XML no início
18 objXmlWriter.WriteStartDocument();
19 //Criar elemento raiz xml1
20 objXmlWriter.WriteStartElement("xml1");
21 //O nome da tabela é o nome do elemento, o nome do campo é o atributo e os registros da tabela são os valores dos atributos.
22 for(int i=0;i
24 objXmlWriter.WriteStartElement("menu");
25 for(int j=0;j
27 //Escreve atributos
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 //Use o método close para fechar o arquivo, caso contrário o arquivo será bloqueado
35 objXmlWriter.Close();
36 // Exibe os resultados na página
37 string strXmlResult;
38 StreamReader objSR = Arquivo.OpenText(strpath);
39 strXmlResult = objSR.ReadToEnd();
40 objSR.Close();
41 Response.Write("
42}
A seguir está o código para gerar um banco de dados relacional através do arquivo XML gerado pelo programa acima
1 private void Page_Load(object sender, System.EventArgs e)
2 {
3 //Coloque aqui o código do usuário para inicializar a página
4 //Definição de informação básica
5 intcx=1;
6 string strConn="servidor=suntears;id do usuário=sa;senha=;banco de dados=xml_example";
7 string strappstr=Request.PhysicalApplicationPath;
8 string strpath=strapstr+"qiming.xml";
9 string strtablename="xml1";
10 string strCreatetable="criar tabela "+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 Objrow DataRow;
17 XmlNodeType objNodeType;
18 //Use a classe XmlReader para operações de acesso a arquivos XML
19 //XmlReader adota o modo pull. Portanto, cada nó é iterado através do método Read()
20 enquanto(objXmlReader.Read())
vinte e um {
22 objNodeType=objXmlReader.NodeType;
23 //Executa diferentes operações com base no tipo de nó
24 opção (objNodeType)
25 {
26 //Declaração no início do arquivo XML
27 caso XmlNodeType.XmlDeclaration:
28 Response.Write("11111"+objXmlReader.Name+"
");
29 pausa;
30 //Tipo de nó normal
31 caso XmlNodeType.Element:
32 //Determina se é um elemento raiz com base no número de atributos
33 if(objXmlReader.AttributeCount>0)
34 {
35 //cx como bit de sinalização. Gere um banco de dados com base na estrutura do elemento ao acessar um nó de elemento não raiz pela primeira vez
36 se(cx==1)
37 {
38 enquanto(objXmlReader.MoveToNextAttribute())
39 {
40 strCreatetable=strCreatetable+objXmlReader.Name+" varchar(50), ";
41}
42 strCreatetable=strCreatetable+")";
43 objCommand=novo SqlCommand(strCreatetable,objConn);
44 objConn.Open();
45 objCommand.ExecuteNonQuery();
46 objConn.Close();
47 objAdapter=new SqlDataAdapter("selecione * de "+strtablename,objConn);
48 objAdapter.Fill(objDSet,strtablename);
49 objXmlReader.MoveToFirstAttribute();
50 //Muda a flag para valor cx
51cx=0;
52}
53 //Despeja os dados do arquivo XML no objeto DataSet
54 objrow=objDSet.Tables[strtablename].NewRow();
55 objXmlReader.MoveToFirstAttribute();
56 para(int j=0;j
58 objrow[j]=objXmlReader.Value.ToString();
59 objXmlReader.MoveToNextAttribute();
60}
61 objDSet.Tables[strtablename].Rows.Add(objrow);
62}
63 pausa;
64}
65}
66 //Exibe a tabela de dados transferidos
67 DataGrid1.DataSource=objDSet.Tables[strtablename];
68DataGrid1.DataBind();
69 }O código para atualizar os dados no banco de dados não foi escrito. Faça você mesmo^_^