Як слід читати XML-дані з файлу, за допомогою Visual C++

Microsoft Visual C# .NET версії цієї статті див.
.

Microsoft Visual Basic .NET версії цієї статті див.
.
Ця стаття стосується такий простір імен з бібліотекою класів Microsoft .NET Framework:

System.xml

У ЦЬОМУ ЗАВДАННІ

Загальні відомості

У цій статті описано використання класу XmlTextReader читати XML-дані з файлу. Клас XmlTextReader , забезпечує прямий аналізу та розмітки XML-дані. У
XmlTextReader класу також реалізує специфікацію XML 1.0, окрім імен, специфікації XML, який визначається консорціумом World Wide Web (W3C). У цій статті описано, як швидко, tokenized доступ потоком XML-дані, замість використання об'єктної моделі, як XML модель об'єкт документа (DOM).

на початок

Вимоги

У цій статті припускається, що вам знайомі такі теми:

  • XML-термінології

  • Створення та читати XML-файл.


У наведеному нижче списку визначено, що необхідного обладнання, програмного забезпечення, інфраструктури мережі і пакетів оновлень, що вам потрібно:

  • Microsoft Visual Studio .NET

  • Microsoft Visual Studio 2005

на початок

Прочитайте XML-дані з файлу

Наприклад, у цій статті, використовується файл з ім'ям Books.xml. Створіть файл Books.xml або використовується зразок файлу, який входить до складу Microsoft .NET програмного забезпечення-Development Kit (SDK) QuickStarts. Він Books.xml також можна завантажити з центру завантажень Microsoft:

Проект папку, слід скопіювати файл Books.xml.


Ознайомитися XML-дані з файлу, виконайте такі дії:

  1. Запустіть Visual Studio .NET 2002, Visual Studio .NET 2003 або Visual Studio 2005 р.

  2. У меню " файл " виберіть
    Створитиі натисніть кнопку проекту.

    До
    Новий проект -діалогове вікно.

  3. У Проекті типівнатисніть кнопку " Visual C++ проектах".

    Примітка. Visual Studio 2005 Visual C++ проектах змінюється на Visual C++.

  4. У розділі шаблониклацніть
    Керовані C++-застосунку під час використання Visual Studio .NET 2002 р.

    У розділі шаблониклацніть Консолі програми .NET під час використання Visual Studio .NET 2003.


    У розділі шаблониклацніть CLR консолі застосунку під час використання Visual Studio 2005.

  5. Введіть у полі " ім'я ",
    Q815658а потім натисніть кнопку OK.

  6. Додайте посилання на System.xml.dll проект. Щоб отримати додаткові відомості про те, як додати посилання на керовані проект Visual C++, клацніть номер статті в базі знань Microsoft Knowledge Base:

    способи: додати посилання на керовані проект Visual C++

  7. Укажіть, за допомогою директиви у просторі імен System::Xml наступним чином:

    using namespace System::Xml;

    Це можна зробити так, що не потрібно отримати XmlTextReader клас призначення, далі в коді. Потрібно використовувати за допомогою директиви, перш ніж будь-які інші оголошень.

  8. Створювати екземпляр елемента XmlTextReader . Заповнити XmlTextReader об'єкт XML-файл.

    Як правило, використовується клас XmlTextReader , якщо потрібно отримати доступ до неформатовані XML-даних без від DOM. Таким чином, XmlTextReader клас дозволяє швидше читати XML-дані. Клас XmlTextReader , має різні конструкторів, укажіть розташування файлу XML-дані.

    Наведений нижче код створюється екземпляр класу XmlTextReader і завантажує файл Books.xml. Додайте наведений нижче код _ tmain функції:

    XmlTextReader* reader = new XmlTextReader ("books.xml");

    Примітка. Visual C++ 2005 _ tmain функції змінюється на основні функції.

  9. Читання даних XML.

    Примітка. Цей крок демонструє, до зовнішніх під час циклу. Використання під час циклу читати XML-дані свідчать про два кроки, які виконати ці дії.

    Після створення XmlTextReader об'єкта, скористайтеся методом читання , читати XML-дані.

    Спосіб читання продовжує послідовно переміщатися XML-файл, поки не досягне спосіб читання в кінець файлу. Спосіб читання досягає в кінець файлу, читання метод повертає false.

    while (reader->Read()){
    // Do some work here on the data.
    Console::WriteLine(reader->Name);
    }
  10. Перевірте вузлів.

    Обробка XML-дані, кожний запис має тип вузла, можна визначити від NodeType . Властивість ім'я а в значення , повернути наведені нижче відомості для поточного вузла або поточний запис:

    • Ім'я вузла, ім'я елемента та назву атрибута.

    • Вузол значення, яке текст вузла.

    Перелічення NodeType може визначити тип вузла. Нижченаведений зразок коду, відображається ім'я елементів і тип документа. Нижченаведений зразок коду, ігнорує атрибути елементів:

    while (reader->Read()){
    switch (reader->NodeType)
    {
    case XmlNodeType::Element: // The node is an element.
    Console::Write("<{0}", reader->Name);
    Console::WriteLine(">");
    break;
    case XmlNodeType::Text: //Display the text in each element.
    Console::WriteLine (reader->Value);
    break;
    case XmlNodeType::EndElement: //Display the end of the element.
    Console::Write("</{0}", reader->Name);
    Console::WriteLine(">");
    break;
    }
    }
  11. Перевірте атрибути.

    Елемент вузла можуть бути список вузлів атрибут, пов'язані з вузла типи елементів. Метод MovetoNextAttribute , послідовно, переміщення по кожному атрибуту в елементі. Властивість HasAttributes дає змогу перевірити, чи на вузол, має будь-які атрибути. Властивість AttributeCount повертає атрибути для поточного вузла.

    while (reader->Read()){
    switch (reader->NodeType)
    {
    case XmlNodeType::Element: // The node is an element.
    Console::Write("<{0}", reader->Name);

    while (reader->MoveToNextAttribute()) // Read the attributes.
    Console::Write(" {0}='{1}'", reader->Name, reader->Value);
    Console::WriteLine(">");
    break;
    case XmlNodeType::Text: //Display the text in each element.
    Console::WriteLine (reader->Value);
    break;
    case XmlNodeType::EndElement: //Display the end of the element.
    Console::Write("</{0}", reader->Name);
    Console::WriteLine(">");
    break;
    }
    }
  12. Збережіть рішення. Створення рішення.

  13. Натисніть сполучення клавіш CTRL + F5, запустіть програму приклад.

на початок

Переглянути код повний список у Visual Studio .NET 2002 року або Visual Studio .NET 2003

#include "stdafx.h"#include <tchar.h>

#using <mscorlib.dll>
#using <System.xml.dll>

using namespace System;
using namespace System::Xml;

void _tmain(void)
{
XmlTextReader* reader = new XmlTextReader ("books.xml");

while (reader->Read())
{
switch (reader->NodeType)
{
case XmlNodeType::Element: // The node is an element.
Console::Write("<{0}", reader->Name);

while (reader->MoveToNextAttribute()) // Read the attributes.
Console::Write(" {0}='{1}'", reader->Name, reader->Value);
Console::WriteLine(">");
break;
case XmlNodeType::Text: //Display the text in each element.
Console::WriteLine (reader->Value);
break;
case XmlNodeType::EndElement: //Display the end of the element.
Console::Write("</{0}", reader->Name);
Console::WriteLine(">");
break;
}
}
Console::ReadLine();
}

Примітка. Потрібно додати загальні варіант компілятора підтримки виконання мови (або clr:oldSyntax) у Visual C++ 2005, для успішної компіляції в наведеному вище прикладі. Додати загальні варіант компілятора підтримки виконання мовою Visual C++-2005, виконайте такі дії:

  1. Клацніть проектуі натисніть кнопку < ім'я > властивості.



    Примітка < ім'я > — це ім'я проекту.

  2. Розгорнути Властивості конфігураціїта клацніть загальні.

  3. Виберіть поширених мови Runtime підтримки, а старі синтаксис (/ clr:oldSyntax)загальномовного середовища виконання, підтримку проекту налаштування у правій області вікна, натисніть Застосуватита натисніть кнопку OK.

Додаткові відомості про до загальномовного середовища виконання, підтримує компілятор параметр, відвідайте веб-сайт корпорації Майкрософт:

/CLR (загальні компіляція виконання мови)
Ці дії, застосовуються до статті.

на початок

Переглянути приклади результатів.

Примітка. Books.xml файл, який входить до складу .NET SDK-QuickStarts має дві відмінності Books.xml файл із посилання, наведене в розділі "Read XML-дані з файлу".

  • Не має Books.xml файл з посилання для завантаження з
    publicationdate атрибут.

  • Не має Books.xml файл з посилання для завантаження з
    ISBN атрибут.

<bookstore><book genre='autobiography' publicationdate='1981' ISBN='1-861003-11-0'>
<title>
The Autobiography of Benjamin Franklin
</title>
<author>
<first-name>
Benjamin
</first-name>
<last-name>
Franklin
</last-name>
</author>
<price>
8.99
</price>
</book>
<book genre='novel' publicationdate='1967' ISBN='0-201-63361-2'>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book genre='philosophy' publicationdate='1991' ISBN='1-861001-57-6'>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>

на початок

Виправлення неполадок

Під час запуску на зразок застосунку, може з'явитися таке повідомлення про помилку:

Сталася необроблена виняткова ситуація типу System.Xml.XmlException , у System.xml.dll
Додаткова інформація: системна помилка.

Це повідомлення про помилку може з'явитися, якщо ви використовуєте Books.xml файл з посилання, наведене в розділі "Read XML-дані з файлу". Ця проблема може виникати, якщо файл Books.xml на пробіл на початку файлу. Щоб вирішити цю проблему, відкрийте файл Books.xml, за допомогою текстового редактора та видалити пробіл.

на початок

Посилання

Щоб отримати додаткові відомості про читання XML зі в XmlReader відвідайте веб-сайт Microsoft Developer Network (MSDN):

на початок

Потрібна додаткова довідка?

Отримуйте нові функції раніше за інших
Приєднатися до Microsoft оцінювачів

Чи були ці відомості корисні?

Дякуємо за ваш відгук!

Дякуємо, що знайшли час і надіслали нам відгук! Можливо, у нас не буде часу відповісти на кожен коментар, але докладемо максимум зусиль, щоб переглянути їх усі. Вас цікавить, як ми використовуємо ваші відгуки?

×