Создание документа XML из объекта DataSet (Набор данных)
Используя объект DataSet (Набор данных) можно создать новый документ XML. Используя запрос XPath, можно перейти в начало документа, а затем, с помощью объекта XmlNodeReader прочитать весь документ. Мы выведем содержимое документа на экран. Класс XmlNodeReader обеспечивает перемещение по документу. Приведем фрагмент кода из примера DataSetXML:
XmlDataDocument *xmlDataDoc = new XmlDataDocument(d); XmlNodeReader *xmlNodeReader = 0; try { XmlNode *node = xmlDataDoc › SelectSingleNode("/"); XmlNodeReader = new XmlNodeReader (node); FormatXml (XmlNodeReader); } catch (Exception *e) // Исключение { Console::WriteLine ( "Exception: {0}", e › ToString()); // Исключение } finally // наконец r if (XmlNodeReader!= 0) // если (XmlNodeReader! = 0) xmlNodeReader › Close(); } static void FormatXml (XmlReader *reader) { while (reader › Read()) // читатель › Чтение () { switch (reader › NodeType) // переключатель //(читатель › NodeType) { case XmlNodeType::Element: // случай // XmlNodeType::Элемент Format (reader, "Element"); // Формат (читатель, "Элемент"); while(reader › MoveToNextAttribute()) Format (reader, "Attribute"); // Формат (читатель, "Атрибут"); break; case XmlNodeType::Text: // случай XmlNodeType:: Текст Format (reader, "Text"); // Формат (читатель, "Текст"); break; static String *lastNodeType = ""; // статическая Строка static void Format(XmlReader *reader, String *nodeType) // Формат { if (nodeType › Equals("Element")) // если (nodeType › Равняется ("Элемент")) { if (lastNodeType › Equals("Element")) // если (lastNodeType › Равняется ("Элемент")) { Console::WriteLine(); } for (int i=0; i < reader › Depth; i++) { Console::Write(" "); // Запись } Console::Write(reader › Name); // Запись:: (читатель › Название); } else if (nodeType › Equals("Text")) // если (nodeType › Равняется ("Текст")) Console::WriteLine("={0}", reader › Value); // Значение else { Console::Write(String::Format(// Запись:: (Строка:: Формат ("{0}<{1}>{2}", nodeType, reader › Name, // Название reader › Value)); // читатель › Значение Console::WriteLine (); } lastNodeType = nodeType; }