Иллюстрированный самоучитель по Architecture .NET

Создание документа 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; }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.