Як читати XML з файлу за допомогою Visual C#

Переклади статей Переклади статей
Номер статті: 307548 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

На цій сторінці

Підсумки

У цій статті описується сценарій виконання XmlTextReader клас для читання мови XML (Extensible Markup) з файлу. XmlTextReader забезпечує пряме розбору і розмітки XML і реалізує XML 1.0 специфікація, а також просторів імен у XML специфікації з консорціумом Інтернет (W3C). Ця стаття надає швидкий, tokenized потоку доступ до XML, а не за допомогою об'єктної моделі як XML для документа Object Model (DOM).

Вимоги

У цьому списку описано Рекомендоване обладнання, Підтримка програмного забезпечення, мережі інфраструктури та пакети оновлень, які потрібно:
  • Microsoft Visual Studio 2005 або Microsoft Visual Studio .NET
Ця стаття припускає, що ви знайомі з наступні теми:
  • XML термінологія
  • Створення та читання файлу XML

Як читати XML з файлу

У цьому прикладі використовується файл з назвою Books.xml. Можна створити власний файл Books.xml або використовувати приклад файлу, що входить до складу .NET програмного забезпечення розвитку Kit (SDK) QuickStarts в такій папці:
\Program Files\Microsoft visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Books.xml слід скопіювати до папки \Bin\Debug, який знаходиться в папці, в якій ви створити цей проект. Books.XML також доступний для завантаження. Побачити, щоб на "Посилання"розділ для місце завантаження.
  1. Почати Visual Studio 2005 або Visual Studio .NET.
  2. Створити новий Visual C# консоль застосунок. Приступити безпосередньо до "Повний код лістингу"розділ або продовжити ці кроки, щоб побудувати застосунок.
  3. Переконайтеся, що проект містить посилання System.Xml.dll складання.
  4. Визначення за допомогою Директиви на System.Xml простір імен, так що ви не зобов'язані кваліфікувати XmlTextReader декларації пізніше у вашому коді. Ви повинні використовувати за допомогою Директиви перед іншими декларації.
    using System.Xml;
    					
  5. Створити екземпляр об'єкта XmlTextReader і заповнити його з XML-файлу. Як правило, XmlTextReader клас використовується, якщо потрібно отримати доступ до XML як фактичні дані без накладні витрати DOM; Таким чином, XmlTextReader клас забезпечує швидкий механізм для читання XML. XmlTextReader клас має різні конструкторів для визначення розташування XML-даних. Наступний код створює екземпляр класу XmlTextReader і завантажує файл Books.xml. Додати наступний код до головного порядку Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. Читайте шляхом XML. (Зауважте, що цей крок демонструє на зовнішньому "циклі", і наступні два кроки демонструють, як використовувати цей цикл читати XML.) Після створення об'єкта XmlTextReader використовувати метод Read читати XML-даних. Метод Read продовжує рухатися через файл XML послідовно, поки він досягає кінця файлу, в який пункт прочитати метод повертає значення "False".
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. Огляньте вузли. Обробити XML-дані, кожен запис А має тип вузла, що може бути визначено за NodeType власності. Ім'я та значення властивості повернення ім'я вузла (елементів і атрибутів імен) і значення вузла (текстовий вузол) поточного вузла (або запис). Перелічення NodeType визначає тип вузла. Нижче зразок коду показує назву елементи і тип документа. Зверніть увагу, що цей зразок ігнорує атрибути елементів.
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an element.
                Console.Write("<" + 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("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }
    					
  8. Огляньте атрибути. Вузол типи елементів можна також надати атрибут вузлів, які пов'язані з ними. MovetoNextAttribute методу переміщення послідовно по кожному атрибуту в елементі. Використовуйте властивість HasAttributes , щоб перевірити, чи вузол має будь-які атрибути. Властивість AttributeCount Повертає кількість атрибутів для поточного вузла.
    while (reader.Read()) 
    {
           switch (reader.NodeType) 
           {
               case XmlNodeType.Element: // The node is an element.
                   Console.Write("<" + reader.Name);
    
                   while (reader.MoveToNextAttribute()) // Read the attributes.
                       Console.Write(" " + 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("</" + reader.Name);
          Console.WriteLine(">");
                   break;
           }
       }
    					
  9. Зберегти і закрити ваш проект.

Повний код лістингу

using System;
using System.Xml;

namespace ReadXMLfromFile
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            XmlTextReader reader = new XmlTextReader ("books.xml");
            while (reader.Read()) 
            {
                switch (reader.NodeType) 
                {
                    case XmlNodeType.Element: // The node is an element.
                        Console.Write("<" + 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("</" + reader.Name);
                        Console.WriteLine(">");
                        break;
                }
            }
            Console.ReadLine();
        }
    }
}
				

Приклад вихідних

<bookstore>
<book>
<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>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>
				

Усунення несправностей

Коли ви перевірити код, може з'явитися таке протокол IMAP про невиправну помилку: необроблена виняткова ситуація: System.Xml.XmlException: неочікуваний XML-декларацію. Оголошення XML має бути перший вузол у документі, а не символи пробілів можуть з'явитися перед його.

Додаткова інформація: системна помилка. Виникнення помилки виняток на наступний рядок коду: Хоча
(reader.Read())
Виняток помилка спричинена інструкція обробки неприпустимий. Наприклад, команди обробки можуть містити зайві заборонено. Нижче наведено приклад неприпустимий обробки Інструкція:
<?xml version='1.0' ?>
Xml-тег має простір попередні в "<’ bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the="" error.=""></’>

ПОСИЛАННЯ

Центрі завантаження Microsoft для завантаження пропонується такий файл:
Згорнути це зображенняРозгорнути це зображення
Завантажити
Завантажити Books.exe.
Щоб отримати додаткові відомості про .NET Framework XML класи, C# відвідайте веб-сайт корпорації Microsoft Developer Network (MSDN):
http://MSDN.Microsoft.com/EN-US/Magazine/cc302158.aspx
Щоб отримати додаткові відомості про клас XmlReader відвідування вузла MSDN:
http://msdn2.Microsoft.com/EN-US/Library/System.XML.xmlreader (vs.71). aspx
Щоб отримати додаткові відомості про те, як використовувати XmlReader , щоб прочитати дані XML відвідайте наступні MSDN веб-сайти:
http://msdn2.Microsoft.com/EN-US/Library/aa720470 (VS.71). aspx

http://msdn2.Microsoft.com/EN-US/Library/tfz3cz6w (vs.71). aspx

Властивості

Номер статті: 307548 - Востаннє переглянуто: 15 листопада 2012 р. - Редакція: 3.0
Застосовується до:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Ключові слова: 
kbdownload kbhowtomaster kbmt KB307548 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 307548

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com