Утверждения поясняются в разделе программы. Класс XmlWriter в основном используется для создания файлов XML.
Ниже описан процесс создания соответствующего XML-файла из реляционной базы данных. Поскольку XML — это всего лишь промежуточное программное обеспечение, схема или DTD игнорируются.
1 частный void Page_Load (отправитель объекта, System.EventArgs e)
2 {
3 //Поместите сюда пользовательский код для инициализации страницы
4 //Определение базовой информации
5 строка strTableName="systypes";
6 String strConnection="server=suntears;user id=sa;пароль=041210;database=webapplication1_db";
7 String strSql="выберите * из "+strTableName;
8 SqlConnection objConn = новый SqlConnection (strConnection);
9 SqlDataAdapter objAdapter = новый SqlDataAdapter (strSql, objConn);
10 DataSet objDSet=новый DataSet();
11 objAdapter.Fill(objDSet, "temp");
12 XmlTextWriter objXmlWriter;
13 String strtemp1=Request.PhysicalApplicationPath;
14 Строка strpath=strtemp1+"qiming.xml";
15 //Инициализируем XmlWriter. Используйте этот класс для записи XML-файлов.
16 objXmlWriter = новый XmlTextWriter (strpath, null);
17 //Создаем XML-объявление в начале
18 objXmlWriter.WriteStartDocument();
19 //Создаем корневой элемент xml1
20 objXmlWriter.WriteStartElement("xml1");
21 //Имя таблицы — это имя элемента, имя поля — это атрибут, а записи в таблице — это значения атрибутов.
22 for(int i=0;i
24 objXmlWriter.WriteStartElement("меню");
25 for(int j=0;j
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 строка 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(отправитель объекта, System.EventArgs e)
2 {
3 //Поместите сюда пользовательский код для инициализации страницы
4 //Определение базовой информации
5 интервал сх=1;
6 string strConn="server=suntears;user id=sa;password=;database=xml_example";
7 строка Strappstr = Request.PhysicalApplicationPath;
8 строк strpath=strappstr+"qiming.xml";
9 строка strtablename="xml1";
10 string strCreatetable="создать таблицу "+strtablename+"(";
11 XmlTextReader objXmlReader=новый XmlTextReader(strpath);
12 SqlConnection objConn = новый SqlConnection (strConn);
13 SqlCommand objCommand;
14 SqlDataAdapter objAdapter;
15 DataSet objDSet=новый DataSet();
16 Объявление DataRow;
17 XmlNodeType objNodeType;
18 //Используйте класс XmlReader для операций доступа к XML-файлам
19 //XmlReader использует режим извлечения. Таким образом, каждый узел проходит через метод Read().
20 пока (objXmlReader.Read())
двадцать один {
22 objNodeType=objXmlReader.NodeType;
23 //Выполняем различные операции в зависимости от типа узла
24 переключатель (objNodeType)
25 {
26 //Объявление в начале XML-файла
27 случай XmlNodeType.XmlDeclaration:
28 Response.Write("11111"+objXmlReader.Name+"
");
29 перерыв;
30 //Нормальный тип узла
31 случай XmlNodeType.Element:
32 //Определяем, является ли это корневым элементом, по количеству атрибутов
33, если (objXmlReader.AttributeCount>0)
34 {
35 //cx как бит флага. Сгенерируйте базу данных на основе структуры элементов при первом доступе к узлу некорневого элемента.
36 если(cx==1)
37 {
38 while(objXmlReader.MoveToNextAttribute())
39 {
40 strCreatetable=strCreatetable+objXmlReader.Name+" varchar(50), ";
41 }
42 strCreatetable=strCreatetable+")";
43 objCommand = новый SqlCommand (strCreatetable, objConn);
44 objConn.Open();
45 objCommand.ExecuteNonQuery();
46 objConn.Close();
47 objAdapter=new SqlDataAdapter("выберите * из "+strtablename,objConn);
48 objAdapter.Fill(objDSet,strtablename);
49 objXmlReader.MoveToFirstAttribute();
50 //Изменяем флаг на значение cx
51cx=0;
52 }
53 //Сбрасываем данные из XML-файла в объект DataSet.
54 objrow=objDSet.Tables[strtablename].NewRow();
55 objXmlReader.MoveToFirstAttribute();
56 for(int j=0;j
58 objrow[j]=objXmlReader.Value.ToString();
59 objXmlReader.MoveToNextAttribute();
60 }
61 objDSet.Tables[strtablename].Rows.Add(objrow);
62 }
63 перерыв;
64}
65 }
66 //Отображение таблицы переданных данных
67 DataGrid1.DataSource=objDSet.Tables[strtablename];
68 DataGrid1.DataBind();
69 }Код для обновления данных в базе данных не написан. Сделай сам^_^