Las declaraciones se explican en el apartado del programa. La clase XmlWriter se utiliza principalmente para la generación de archivos XML.
El siguiente es el proceso de generación del archivo XML correspondiente a partir de la base de datos relacional. Dado que XML es solo middleware, se ignora Schema o DTD.
1 Page_Load vacío privado (remitente del objeto, System.EventArgs e)
2 {
3 //Pon el código de usuario aquí para inicializar la página
4 //Definición de información básica
5 Cadena strTableName="tipos de sistema";
6 Cadena strConnection="servidor=suntears;id de usuario=sa;contraseña=041210;base de datos=webapplication1_db";
7 String strSql="seleccione * de "+strTableName;
8 SqlConnection objConn=new SqlConnection(strConnection);
9 SqlDataAdapter objAdapter=nuevo SqlDataAdapter(strSql,objConn);
10 Conjunto de datos objDSet=nuevo Conjunto de datos();
11 objAdapter.Fill(objDSet,"temp");
12 XmlTextWriter objXmlWriter;
13 Cadena strtemp1=Request.PhysicalApplicationPath;
14 Cadena strpath=strtemp1+"qiming.xml";
15 //Inicializar XmlWriter Utilice esta clase para escribir archivos XML.
16 objXmlWriter=nuevo XmlTextWriter(strpath,null);
17 //Crea la declaración XML al principio
18 objXmlWriter.WriteStartDocument();
19 //Crear elemento raíz xml1
20 objXmlWriter.WriteStartElement("xml1");
21 // El nombre de la tabla es el nombre del elemento, el nombre del campo es el atributo y los registros de la tabla son los valores de los atributos.
22 para(int i=0;i
24 objXmlWriter.WriteStartElement("menú");
25 para(int j=0;j
27 //Escribir 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 // Utilice el método de cierre para cerrar el archivo; de lo contrario, el archivo se bloqueará
35 objXmlWriter.Close();
36 // Mostrar los resultados en la página
37 cadenas strXmlResult;
38 StreamReader objSR = File.OpenText(strpath);
39 strXmlResult = objSR.ReadToEnd();
40 objSR.Close();
41 Response.Write("" + Server.HtmlEncode(strXmlResult) + "
");
42 }
El siguiente es el código para generar una base de datos relacional a través del archivo XML generado por el programa anterior
1 Page_Load vacío privado (remitente del objeto, System.EventArgs e)
2 {
3 //Pon el código de usuario aquí para inicializar la página
4 //Definición de información básica
5intcx=1;
6 cadenas strConn="servidor=suntears;id de usuario=sa;contraseña=;base de datos=xml_example";
7 cadenas strappstr=Request.PhysicalApplicationPath;
8 cadenas strpath=strappstr+"qiming.xml";
9 cadenas strtablename="xml1";
10 cadenas strCreatetable="crear tabla "+strtablename+"(";
11 XmlTextReader objXmlReader=nuevo XmlTextReader(strpath);
12 SqlConnection objConn=nueva SqlConnection(strConn);
13 SqlCommandobjCommand;
14 SqlDataAdapter objAdapter;
15 Conjunto de datos objDSet=nuevo conjunto de datos();
16 objeto DataRow;
17 XmlNodeType objNodeType;
18 //Utilice la clase XmlReader para operaciones de acceso a archivos XML
19 //XmlReader adopta el modo pull. Por lo tanto, cada nodo se itera a través del método Read()
20 mientras(objXmlReader.Read())
veintiuno {
22 objNodeType=objXmlReader.NodeType;
23 //Realizar diferentes operaciones según el tipo de nodo
24 interruptores (objNodeType)
25 {
26 //Declaración al principio del archivo XML
27 caso XmlNodeType.XmlDeclaración:
28 Response.Write("11111"+objXmlReader.Name+"
");
29 descanso;
30 //Tipo de nodo normal
31 caso XmlNodeType.Element:
32 // Determinar si es un elemento raíz según el número de atributos
33 si(objXmlReader.AttributeCount>0)
34 {
35 //cx como bit de bandera. Genere una base de datos basada en la estructura del elemento al acceder a un nodo de elemento no raíz por primera vez
36 si(cx==1)
37 {
38 mientras (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("seleccione * de "+strtablename,objConn);
48 objAdapter.Fill(objDSet,strtablename);
49 objXmlReader.MoveToFirstAttribute();
50 //Cambia la bandera al valor cx
51cx=0;
52 }
53 //Volcar los datos del archivo XML en el 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 descanso;
64}
65 }
66 //Mostrar la tabla de datos transferidos
67 DataGrid1.DataSource=objDSet.Tables[strtablename];
68 DataGrid1.DataBind();
69 }El código para actualizar los datos de la base de datos no se ha escrito. Hágalo usted mismo ^_^