Hoe XML-query met een XPath-expressie met behulp van Visual c#

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

Op deze pagina

Samenvatting

In dit artikel wordt beschreven hoe query eenXPathDocumentobject met een XML Path Language (XPath) expressie met deXPathNavigatorklasse. XPath wordt programmatisch gebruikt om expressies te evalueren en selecteren van specifieke knoop punten in een document.

Vereisten

De volgende lijst bevat een overzicht van de aanbevolen hardware, software, net werk infrastructuur en service packs die u nodig hebt:
  • Visual c#
In dit artikel wordt ervan uitgegaan dat u bekend met de volgende onderwerpen bent:
  • XML-terminologie
  • Maken en lezen van een XML-bestand
  • XPath-syntaxis

Doorzoeken van XML met een XPath-expressie

  1. Maak een nieuw Visual c# Console toepassing in Visual Studio.

    OPMERKINGIn het volgende voorbeeld wordt een bestand met de naam Books. XML. U kunt zelf een bestand maken of kunt u het voorbeeld dat wordt geleverd met het.Introductie handleidingen NET Software Development Kit (SDK). Als u niet over de introductie handleidingen geïnstalleerd beschikt en u niet wilt installeren, raadpleegt u het gedeelte "Verwijzingen" voor de Books downloadlocatie. Als u de introductie handleidingen geïnstalleerd hebt, kan het bestand kan worden gevonden in de volgende map:
    Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB programma
    U moet het bestand kopiëren naar de map \Bin\Debug bevindt zich onder de map waarin u dit project gemaakt.
  2. Zorg ervoor dat het project verwijst naar deSystem. XMLnaam ruimte.
  3. Gebruik demet behulp vaninstructie op deXMLenXPathnaam ruimten zodat u niet hoeft te kwalificeren declaraties in deze naam ruimten in uw code later. Moet u demet behulp vanverklaring voorafgaande declaraties, als volgt:
    using System.Xml;
    using System.Xml.XPath;
    					
  4. De juiste variabelen declareren. Declareer eenXPathDocumentobject voor het XML-document, eenXpathNavigatorobject XPath-expressies te evalueren en eenXPathNodeIteratorobject dat de geselecteerde knoop punten doorlopen. Declareer eenTeken reeksobject waarin het XPath-expressies. Voeg de declaratie code in deHoofdfunctie Class1.
       XPathNavigator nav;
       XPathDocument docNav;
       XPathNodeIterator NodeIter;
       String strExpression;
    					
  5. Laad eenXPathDocumentmet het voorbeeldbestand Books. XML. HetXPathDocumentklasse gebruikt XSLT (Extensible Stylesheet Language Transformations) voor een snelle en prestatiegerichte cache voor verwerking van XML-documenten. Het is vergelijkbaar met het XML DOM (Document Object Model), maar wordt verregaand geoptimaliseerd voor XSLT-verwerking en het gegevensmodel van XPath.
        // Open the XML.
        docNav = new XPathDocument(@"c:\books.xml");
    					
  6. Maak eenXPathNavigatoruit het document. HetXPathNavigatorobject wordt gebruikt voor alleen-lezen XPath-query's. De XPath-query's kunnen de resulterende waarde of veel knoop punten retourneren.
         // Create a navigator to query with XPath.
         nav = docNav.CreateNavigator();
    					
  7. XPath-expressie om de gemiddelde kosten van een rapport maken. XPath-expressie resulteert in een enkele waarde. Zie voor volledige informatie over XPath-syntaxis "XPath-syntaxis' in het gedeelte"Verwijzingen".
         // Find the average cost of a book.
         // This expression uses standard XPath syntax.
         strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";
    					
  8. Gebruik deEvaluerenmethode van deXPathNavigatorobject de XPath-expressie te evalueren. HetEvaluerenmethode voor het resultaat van de expressie.
        // Use the Evaluate method to return the evaluated expression.
        Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
  9. Maak een XPath-expressie zoeken alle rapporten die meer dan tien dollar kosten. XPath-expressie retourneert alleen titel knoop punten uit de XML-bron.
        // Find the title of the books that are greater then $10.00.
        strExpression = "/bookstore/book/title[../price>10.00]";
    					
  10. Maak eenXPathNodeIteratorvoor de knoop punten die zijn geselecteerd met deSelecteermethode van deXPathNavigator. HetXPathNodeIteratorvertegenwoordigt een verzameling knoop punten XPath en ondersteunt daarom bewerkingen op deze verzameling knoop punten.
        // Select the node and place the results in an iterator.
        NodeIter = nav.Select(strExpression);
  11. Gebruik deXPathNodeIterator, die is geretourneerd door deSelecteermethodeXPathNavigator, de geselecteerde knoop punten doorlopen. In dit geval kunt u deMoveNextmethode van deXPathNodeIteratoralle geselecteerde knoop punten doorloopt.
      Console.WriteLine("List of expensive books:");
      //Iterate through the results showing the element value.
      while (NodeIter.MoveNext())
      {
          Console.WriteLine("Book Title: {0}", NodeIter.Current.Value);
      };
    					
  12. Gebruik deReadLinemethode om een pauze toevoegen aan het einde van de console weergave kunnen de bovengenoemde resultaten weer te geven.
        // Pause
        Console.ReadLine();
    					
  13. Bouwen en uitvoeren van uw project. Houd er rekening mee dat de resultaten weer in het consolevenster gegeven worden.

Problemen oplossen

Wanneer u de code test, wordt het volgende foutbericht van de uitzondering weer gegeven:
Type "System.Xml.XmlException" een onverwerkte uitzondering opgetreden in System.xml.dll

Meer informatie: systeemfout.
De uitzonderingsfout optreedt op de volgende regel code:
docNav = new XPathDocument("c:\\books.xml");
				
De uitzonderingsfout wordt veroorzaakt door een ongeldige verwerkingsinstructie. Zo kan de verwerkingsinstructie overbodige spaties bevat. Hier volgt een voorbeeld van een ongeldige verwerkingsinstructie:
<?xml version='1.0' ?>
Lost de uitzondering, op een van de volgende manieren:
  • Corrigeer de ongeldige verwerkingsinstructie. Hier volgt een voorbeeld van een ongeldige verwerkingsinstructie:
    <?xml version='1.0'?>
    -OF-
  • De XML-verwerkingsinstructie van het bestand Books. XML verwijderen.

Referenties

Het volgende bestand wordt gedownload vanaf het Microsoft Download Center:
Deze afbeelding samenvouwenDeze afbeelding uitklappen
Downloaden
Books. xml nu downloaden
Ga naar de volgende Microsoft-websites voor meer informatie:
XML-code in.NETTO:..NET Framework XML-klassen en c# bieden eenvoudige en schaalbare gegevensmanipulatie
http://msdn.Microsoft.com/msdnmag/issues/01/01/XML/default.aspx

Klasse XPathNavigator
http://msdn.Microsoft.com/en-us/library/System.XML.XPath.XPathNavigator.aspx

XPathDocument, klasse
http://msdn.Microsoft.com/en-us/library/System.XML.XPath.xpathdocument.aspx

XPathNodeIterator, klasse
http://msdn.Microsoft.com/en-us/library/System.XML.XPath.XPathNodeIterator.aspx

Met de klasse XslTransform XSLT-transformaties
http://msdn.Microsoft.com/en-us/library/47yh29a9.aspx

XPath-syntaxis
http://msdn2.Microsoft.com/en-us/library/ms763742.aspx
Ga naar de volgende website van het World Wide Web Consortium (W3C) voor meer informatie over XPath:
XML Path-taal (XPath)
Versie 1. 0: W3C-aanbeveling 16 November 1999
http://www.w3.org/TR/1999/REC-XPath-19991116

Eigenschappen

Artikel ID: 308333 - Laatste beoordeling: maandag 28 februari 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Trefwoorden: 
kbdownload kbhowtomaster kbmt KB308333 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:308333

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