XML lezen vanuit een bestand met behulp van Visual C#

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 307548 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

In dit artikel wordt beschreven hoe de klasse XmlTextReader wordt gebruikt voor het lezen van XML (Extensible Markup Language) uit een bestand. Met XmlTextReader kunt u XML rechtstreeks lezen en verdelen in tokens, en zowel de XML 1.0-specificatie als de naamruimten in de XML-specificatie van het W3C (World Wide Web Consortium) implementeren. Dit artikel beschrijft snelle, stroomsgewijze tokentoegang tot XML, in plaats van toegang via een objectmodel zoals XML DOM (Document Object Model).

Vereisten

U hebt de volgende hardware, software, netwerkinfrastructuur, vaardigheden, kennis en service packs nodig:
  • Microsoft Visual Studio 2005 of Microsoft Visual Studio .NET
In dit artikel wordt ervan uitgegaan dat u bekend bent met de volgende onderwerpen:
  • XML-terminologie
  • Een XML-bestand maken en lezen

XML lezen vanuit een bestand

Dit voorbeeld maakt gebruik van een bestand met de naam Books.xml. U kunt zelf een bestand Books.xml maken of gebruikmaken van het voorbeeldbestand bij de .NET SDK (Software Development Kit) QuickStarts in de volgende map:
\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Kopieer Books.xml naar de map \Bin\Debug. Deze map bevindt zich onder de map waarin u dit project maakt. U kunt Books.xml ook downloaden. Zie de sectie Verwijzingen voor informatie over de downloadlocatie.
  1. Start Visual Studio 2005 of Visual Studio .NET.
  2. Maak een nieuwe consoletoepassing in Visual C#. Ga verder met de sectie 'Volledige code' of voer de volgende stappen uit om de toepassing te maken.
  3. Zorg ervoor dat het project verwijst naar de assembly System.Xml.dll.
  4. Geef de instructie using op voor de naamruimte System.Xml, zodat u verderop in uw code geen XmlTextReader-declaraties hoeft te kwalificeren. Gebruik de instructie using vóór alle andere definities.
    using System.Xml;
    					
  5. Maak een exemplaar van het object XmlTextReader en vul dit met het XML-bestand. Meestal wordt de klasse XmlTextReader gebruikt als u de XML als onbewerkte gegevens zonder overhead van een DOM wilt lezen. De klasse XmlTextReader is dan ook een snellere methode voor het lezen van XML. De klasse XmlTextReader beschikt over verschillende constructors om de locatie van de XML-gegevens op te geven. Met de volgende code wordt een exemplaar gemaakt van de klasse XmlTextReader en wordt het bestand Books.xml geladen. Voeg de volgende code toe aan de hoofdprocedure van Class1.
    XmlTextReader lezer = new XmlTextReader ("books.xml");
    					
  6. Lees de XML. (In deze stap wordt een outer 'while'-lus gedemonstreerd. In de volgende twee stappen wordt gedemonstreerd hoe u de lus gebruikt om de XML te lezen.) Nadat u het object XmlTextReader hebt gemaakt, gebruikt u de methode Read om de XML-gegevens te lezen. Met de methode Read worden de gegevens in het XML-bestand opeenvolgend gelezen totdat het einde van het bestand wordt bereikt. Op dat punt retourneert de methode Read de waarde 'False'.
    while (lezer.Read()) 
    {
        // Gegevens hier verwerken.
    	Console.WriteLine(lezer.Name);
    }
    Console.ReadLine();
    					
  7. Controleer de knooppunten. Voor de verwerking van de XML-gegevens beschikt elke record over een knooppunttype dat wordt ingesteld met de eigenschap NodeType. De eigenschappen Name en Value retourneren de knooppuntnaam (de naam van het element en het kenmerk) en de knooppuntwaarde (de knoppunttekst) van het huidige knooppunt (of de huidige record). De opsomming van NodeType bepaalt het type knooppunt. Met de onderstaande voorbeeldcode worden de namen van de elementen en het documenttype weergegeven. In dit voorbeeld worden geen elementkenmerken weergegeven.
    while (lezer.Read()) 
    {
        switch (lezer.NodeType) 
        {
            case XmlNodeType.Element: // Het knooppunt is een element.
                Console.Write("<" + lezer.Name);
       Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //De tekst in elk element weergeven.
                Console.WriteLine (lezer.Value);
                break;
      case XmlNodeType. EndElement: //Het einde van het element weergeven.
                Console.Write("</" + lezer.Name);
       Console.WriteLine(">");
                break;
        }
    }
    					
  8. Controleer de kenmerken. Knooppunttypen van elementen kunnen een lijst met gekoppelde kenmerkknooppunten bevatten. Met de methode MovetoNextAttribute wordt elk kenmerk in het element opeenvolgend gelezen. Gebruik de eigenschap HasAttributes om te controleren of een knooppunt kenmerken bevat. De eigenschap AttributeCount retourneert het aantal kenmerken voor het huidige knooppunt.
    while (lezer.Read()) 
    {
           switch (lezer.NodeType) 
           {
               case XmlNodeType.Element: // Het knooppunt is een element.
                   Console.Write("<" + lezer.Name);
    
                   while (lezer.MoveToNextAttribute()) // Attributen lezen.
                       Console.Write(" " + lezer.Name + "='" + lezer.Value + "'");
          Console.WriteLine(">");
                   break;
         case XmlNodeType.Text: //De tekst in elk element weergeven.
                   Console.WriteLine (lezer.Value);
                   break;
         case XmlNodeType. EndElement: //Het einde van het element weergeven.
                   Console.Write("</" + lezer.Name);
          Console.WriteLine(">");
                   break;
           }
       }
    					
  9. Sla het project op en sluit het af.

Volledige code

using System;
using System.Xml;

namespace ReadXMLfromFile
{
    /// <summary>
    /// Samenvatting voor Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            XmlTextReader lezer = new XmlTextReader ("books.xml");
            while (lezer.Read()) 
            {
                switch (lezer.NodeType) 
                {
                    case XmlNodeType.Element: // Het knooppunt is een element.
                        Console.Write("<" + lezer.Name);
                        Console.WriteLine(">");
                        break;
                    case XmlNodeType.Text: //De tekst in elk element weergeven.
                        Console.WriteLine (lezer.Value);
                        break;
                    case XmlNodeType.EndElement: //Het einde van het element weergeven.
                        Console.Write("</" + lezer.Name);
                        Console.WriteLine(">");
                        break;
                }
            }
            Console.ReadLine();
        }
    }
}
				

Voorbeeld van uitvoer

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

Probleemoplossing

Als u de code test, wordt mogelijk het volgende foutbericht over een uitzondering weergegeven: Unhandled Exception: System.Xml.XmlException: Unexpected XML declaration. The XML declaration must be the first node in the document, and no white space characters are allowed to appear before it.

Additional information: System error. The exception error occurs on the following line of code: While
(lezer.Read())
De uitzonderingsfout is het gevolg van een ongeldige verwerkingsinstructie. Het is bijvoorbeeld mogelijk dat de instructie overbodige spaties bevat. Hieronder ziet u een voorbeeld van een ongeldige verwerkingsinstructie:
<?xml version='1.0' ?>
In deze xml-code staat een spatie vóór '<'. Verwijder deze spatie om de fout op te lossen.

Verwijzingen

U kunt het volgende bestand downloaden van het Microsoft Downloadcentrum:
Deze afbeelding samenvouwenDeze afbeelding uitklappen
Downloaden
Het pakket Books.exe nu downloaden.
Meer informatie over .NET Framework XML-klassen en C# vindt u op de volgende MSDN-website (Microsoft Developer Network):
http://msdn.microsoft.com/nl-nl/magazine/cc302158(en-us).aspx
Meer informatie over de klasse XmlReader vindt u op de volgende MSDN-website:
http://msdn.microsoft.com/nl-nl/library/system.xml.xmlreader(vs.71).aspx
Meer informatie over het gebruik van XmlReader voor het lezen van XML-gegevens vindt u op de volgende MSDN-websites:
http://msdn.microsoft.com/nl-nl/library/aa720470(VS.71).aspx

http://msdn.microsoft.com/nl-nl/library/tfz3cz6w(vs.71).aspx
Opmerking Dit is een artikel voor snelle publicatie dat rechtstreeks is gemaakt vanuit de ondersteuningsorganisatie van Microsoft. De informatie in dit artikel wordt in de huidige vorm aangeboden in reactie op nieuw geconstateerde problemen. Aangezien artikelen van dit type zeer snel moeten worden gepubliceerd, kan de inhoud typografische fouten bevatten en kan de inhoud zonder voorafgaande kennisgeving worden gewijzigd. Raadpleeg de Gebruiksrechtovereenkomst voor overige aandachtspunten.

Eigenschappen

Artikel ID: 307548 - Laatste beoordeling: vrijdag 31 mei 2013 - Wijziging: 1.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Trefwoorden: 
kbdownload kbhowtomaster KB307548

Geef ons feedback

 

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