Teď jste offline a čekáte, až se znova připojí internet.

Postup čtení dat XML ze souboru s využitím jazyka Visual C#

Verzi tohoto článku pro aplikaci Microsoft Visual Basic .NET naleznete pod číslem 301225.

Tento článek se týká následujícího oboru názvů knihovny tříd technologie Microsoft .NET Framework:
  • System.Xml
Souhrn
Tento článek popisuje způsob použití třídy XmlTextReader pro čtení dat jazyka XML (Extensible Markup Language) ze souboru. Třída XmlTextReader poskytuje přímou analýzu a tokenizaci jazyka XML a implementuje specifikaci XML 1.0, stejně jako obory názvů ve specifikaci XML od konsorcia W3C (World Wide Web Consortium). V tomto článku je použit rychlý, tokenizovaný přístup k datům XML pomocí datového proudu, nikoli objektový model jako například XML DOM (Document Object Model).

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a požadované aktualizace Service Pack:
  • Microsoft Visual Studio 2005 nebo Microsoft Visual Studio .NET.
Tento článek předpokládá znalost následujících témat:
  • terminologie XML,
  • vytvoření a čtení souboru XML.

Postup čtení dat XML ze souboru

Tento příklad používá soubor s názvem Books.xml. Můžete si vytvořit vlastní soubor Books.xml, nebo použít vzorový soubor, který je obsažený v části QuickStart sady .NET Software Development Kit (SDK) v následující složce:
\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Soubor Books.xml je třeba zkopírovat do složky \Bin\Debug, která je umístěná ve složce, ve které tento projekt vytváříte. Soubor Books.xml lze také stáhnout. Umístění souboru ke stažení najdete v části „Odkazy“.
  1. Spusťte sadu Visual Studio 2005 nebo Visual Studio .NET.
  2. Vytvořte novou konzolovou aplikaci jazyka Visual C#. Můžete přejít přímo k části „Úplný výpis kódu“ nebo pokračovat v pročítání postupu vytvoření aplikace.
  3. Zkontrolujte, zda projekt obsahuje odkaz na sestavení System.Xml.dll.
  4. Použijte direktivu using na obor názvů System.Xml, díky čemuž nebude později ve zdrojovém kódu blíže určovat deklarace třídy XmlTextReader. Direktivu using je nutné použít před všemi ostatními deklaracemi.
    using System.Xml;					
  5. Vytvořte instanci objektu XmlTextReader a naplňte ji daným souborem XML. Třídu XmlTextReader použijete obvykle v případě, že chcete přistoupit k datům XML v nezpracované podobě bez režie modelu DOM. Třída XmlTextReader tudíž poskytuje mechanismus pro čtení dat XML. Třída XmlTextReader má pro určení umístění dat XML jiné konstruktory. Následující kód vytvoří instanci třídy XmlTextReader a načte soubor Books.xml. Následující kód přidejte do procedury Main třídy Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");					
  6. Načtěte data XML. (Tento krok demonstruje vnější smyčku „while“, přičemž další dva kroky demonstrují použití této smyčky pro čtení dat XML.) Po vytvoření objektu XmlTextReader použijte pro načítání dat XML metodu Read. Metoda Read postupně sekvenčně prochází soubor XML až do chvíle, kdy dosáhne konce souboru. V tom okamžiku vrátí metoda Read hodnotu „False.“
    while (reader.Read()) {    // Tady s daty provedeme nějakou činnost.	Console.WriteLine(reader.Name);}Console.ReadLine();					
  7. Prozkoumejte uzly. Každý záznam má pro účely zpracování dat XML typ uzlu, který lze určit podle vlastnosti NodeType. Vlastnosti Name a Value vracejí název uzlu (názvy prvku a atributů) a hodnotu (text uzlu) aktuálního uzlu (nebo záznamu). Výčet NodeType určuje typ uzlu. Následující vzorový kód zobrazí název prvků a typ dokument. Tento příklad ignoruje atributy prvků.
    while (reader.Read()) {    switch (reader.NodeType)     {        case XmlNodeType.Element: // Tento uzel je prvek.            Console.Write("<" + reader.Name);   Console.WriteLine(">");            break;  case XmlNodeType.Text: //Zobrazení textu v jednotlivých prvcích.            Console.WriteLine (reader.Value);            break;  case XmlNodeType. EndElement: //Zobrazení konce prvku.            Console.Write("</" + reader.Name);   Console.WriteLine(">");            break;    }}					
  8. Prozkoumejte atributy. Uzly typu prvek mohou obsahovat seznam uzlů atributů, které jsou k nim přidružené. Metoda MovetoNextAttribute prochází sekvenčně jednotlivé atributy daného prvku. Pomocí vlastnosti HasAttributes můžete testovat, zda má uzel nějaké atributy. Vlastnost AttributeCount vrací počet atributů aktuálního uzlu.
    while (reader.Read()) {       switch (reader.NodeType)        {           case XmlNodeType.Element: // Tento uzel je prvek.               Console.Write("<" + reader.Name);               while (reader.MoveToNextAttribute()) // Čtení atributů.                   Console.Write(" " + reader.Name + "='" + reader.Value + "'");      Console.WriteLine(">");               break;     case XmlNodeType.Text: //Zobrazení textu v jednotlivých prvcích.               Console.WriteLine (reader.Value);               break;     case XmlNodeType. EndElement: //Zobrazení konce prvku.               Console.Write("</" + reader.Name);      Console.WriteLine(">");               break;       }   }					
  9. Uložte a zavřete projekt.

Úplný výpis kódu

using System;using System.Xml;namespace ReadXMLfromFile{    /// <summary>    /// Souhrnný popis třídy Class1.    /// </summary>    class Class1    {        static void Main(string[] args)        {            XmlTextReader reader = new XmlTextReader ("books.xml");            while (reader.Read())             {                switch (reader.NodeType)                 {                    case XmlNodeType.Element: // Tento uzel je prvek.                        Console.Write("<" + reader.Name);                        Console.WriteLine(">");                        break;                    case XmlNodeType.Text: //Zobrazení textu v jednotlivých prvcích.                        Console.WriteLine (reader.Value);                        break;                    case XmlNodeType.EndElement: //Zobrazení konce prvku.                        Console.Write("</" + reader.Name);                        Console.WriteLine(">");                        break;                }            }            Console.ReadLine();        }    }}				

Vzorový výstup

<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>				

Odstraňování potíží

Při testování kódu se může se zobrazit následující chybová zpráva s výjimkou: Neošetřená výjimka: System.Xml.XmlException: Neočekávaná deklarace jazyka XML. Deklarace XML musí být prvním uzlem v dokumentu. Před ní nejsou povoleny žádné prázdné znaky.

Další informace: Chyba systému. K chybě výjimky došlo na následujícím řádku kódu: While
(reader.Read())
Chyba výjimky je způsobena neplatnou instrukcí pro zpracování. Je například možné, že instrukce pro zpracování obsahuje nadbytečné mezery. Dále je uveden příklad neplatné instrukce pro zpracování:
<?xml version='1.0' ?>
Tato značka XML obsahuje mezeru před závorkou <. Chcete-li chybu vyřešit, odstraňte tuto mezeru.

ODKAZY

Na webu služby Stažení softwaru je k dispozici ke stažení následující soubor:
Další informace o třídách XML technologie .NET Framework a jazyku C# naleznete na následujícím webu služby MSDN (Microsoft Developer Network): Další informace o třídě XmlReader naleznete na následujícím webu MSDN: Další informace o použití třídy XmlReader ke čtení dat XML naleznete na následujících webech MSDN:
Poznámka: Toto je článek určený k rychlému zveřejnění, který vydala přímo služba podpory společnosti Microsoft. Uvedené informace jsou poskytovány jako odpověď na vzniklé problémy. Vzhledem k požadavku na rychlé zveřejnění je možné, že zpráva obsahuje typografické chyby, a může být kdykoli bez ohlášení revidována. Další pokyny naleznete v dokumentu Podmínky užití.
Vlastnosti

ID článku: 307548 - Poslední kontrola: 05/31/2013 13:17:00 - Revize: 1.0

  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbdownload kbhowtomaster KB307548
Váš názor
s">