Jak dotazu XML s výraz XPath pomocí Visual C#

Microsoft Visual Basic .NET verzi tohoto článku naleznete v 301220 .


Tento článek odkazuje na následující obor názvů knihovny tříd rozhraní.NET Framework společnosti Microsoft:

  • System.Xml.XPath

V TOMTO ÚKOLU

Souhrn

Tento článek demonstruje dotaz s výrazem jazyk XML Path (XPath) pomocí třídy XPathNavigator objekt XPathDocument . Výraz XPath je programově lze vyhodnotit výrazy a vyberte konkrétní uzly v dokumentu.


Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:

  • Visual C#
Tento článek předpokládá, že jste obeznámeni s následující témata:

  • Terminologie jazyka XML
  • Vytvoření a čtení souboru XML
  • Syntaxe jazyka XPath

Jak dotaz XML pomocí výrazu XPath

  1. Vytvořte nové Visual C# aplikace konzoly v aplikaci Visual Studio.

    Poznámka: Tento příklad používá soubor s názvem Books.xml. Můžete vytvořit vlastní soubor Books.xml, nebo můžete použít vzorek, který je součástí .NET Software Development Kit (SDK), pomůcky pro začátečníky. Pokud nemáte pomůcky pro začátečníky, nainstalován a nechcete, aby k jejich instalaci, naleznete v "Odkazy" části Books.xml umístění souboru ke stažení. Máte-li pomůcky pro začátečníky, nainstalován, můžete soubor nalezen v následující složce:
    Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    Je nutné zkopírovat soubor do složky \Bin\Debug, který je umístěn ve složce, ve kterém jste vytvořili tento projekt.
  2. Ujistěte se, že projekt odkazuje System.Xml oboru názvů.
  3. Použijte příkaz pomocí na oborech názvů Xml a XPath , takže není nutné kvalifikovat deklarace ve obory názvů později v kódu. Je nutné použít příkaz using před všemi ostatními deklaracemi takto:
    using System.Xml;using System.Xml.XPath;

  4. Odpovídající proměnné deklarujte. Deklarujte objektu XPathDocument podržte dokumentu XML, objekt XpathNavigator k vyhodnocení výrazů XPath a objektu XPathNodeIterator iterovat vybrané uzly. Deklarujte objekt řetězec držet výrazy XPath. Přidáte kód deklarace v hlavní funkci v Class1.
       XPathNavigator nav;   XPathDocument docNav;
    XPathNodeIterator NodeIter;
    String strExpression;

  5. Načtěte XPathDocument s ukázkový soubor Books.xml. Třída XPathDocument poskytuje rychlé a orientovaný výkonu mezipaměti pro zpracování dokumentů XML pomocí šablony stylů transformace XSLT (Extensible Language). Je podobný na XML modelu DOM (Document Object), ale je vysoce optimalizována pro zpracování XSLT a XPath datového modelu.
        // Open the XML.    docNav = new XPathDocument(@"c:\books.xml");

  6. Vytvoření XPathNavigator z dokumentu. Prvek XPathNavigator objekt se používá pro dotazy jazyka XPath jen pro čtení. Dotazy jazyka XPath může vrátit výsledné hodnoty nebo mnoho uzlů.
         // Create a navigator to query with XPath.     nav = docNav.CreateNavigator();

  7. Vytvořte výraz XPath najít průměrné náklady knihu. Tento výraz XPath vrací pouze jednu hodnotu. Podrobnosti o syntaxi jazyka XPath naleznete v tématu "XPath syntaxe" v části "Odkazy".
         // Find the average cost of a book.     // This expression uses standard XPath syntax.
    strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";

  8. Použijte metodu vyhodnotit XPathNavigator objekt k vyhodnocení výrazů XPath. Vyhodnotit metoda vrátí výsledky výrazu.
        // Use the Evaluate method to return the evaluated expression.    Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
  9. Vytvořte výraz XPath najít všechny knihy, které náklady více než deset dolarů. Tento výraz XPath vrací pouze uzly hlavy ze zdroje XML.
        // Find the title of the books that are greater then $10.00.    strExpression = "/bookstore/book/title[../price>10.00]";

  10. Vytvořte XPathNavigator Vyberte metodu XPathNodeIterator pro uzly, které jsou vybrány. XPathNodeIterator představuje nodeset XPath a proto podporuje operace na tomto nodeset.
        // Select the node and place the results in an iterator.    NodeIter = nav.Select(strExpression);
  11. Pomocí XPathNodeIterator, která byla vrácena z metody XPathNavigator Vyberte , chcete-li procházet vybrané uzly. V takovém případě můžete MoveNext metoda XPathNodeIterator iterovat všechny vybrané uzly.
      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. Použijte metodu ReadLine přidat přerušení na konci zobrazení konzoly snadněji zobrazit výsledky výše uvedených.
        // Pause    Console.ReadLine();

  13. Sestavte a spusťte projekt. Všimněte si, že výsledky jsou zobrazeny v okně konzoly.

Poradce při potížích

Při testování kód, může se zobrazit následující chybová zpráva Výjimka:
V System.xml.dll došlo k neošetřené výjimce typu "System.Xml.XmlException"

Další informace: systémová chyba.
Na následující řádek kódu dojde k chybě výjimka:
docNav = new XPathDocument("c:\\books.xml");
Výjimka chyba je způsobena zpracování Neplatná instrukce. Instrukce pro zpracování může například obsahovat nadbytečné mezery. Následuje příklad instrukce pro zpracování neplatný:
<?xml version='1.0' ?>
Chcete-li vyřešit tuto výjimku, proveďte některou z následujících akcí:
  • Opravte neplatné zpracování. Následuje příklad instrukce pro zpracování platné:
    <?xml version='1.0'?>
    -NEBO-
  • Odstranění instrukce pro zpracování XML z soubor Books.xml.

Odkazy

Následující soubor je k dispozici pro stažení z Microsoft Download Center:
Další informace naleznete na následujících webech společnosti Microsoft:

Další informace o XPath naleznete na následujícím webu World Wide Web Consortium (W3C):

Jazyk XML Path (XPath)
Verze 1.0: W3C doporučení 16 listopad 1999
http://www.w3.org/TR/1999/REC-xpath-19991116
Vlastnosti

ID článku: 308333 - Poslední kontrola: 20. 1. 2017 - Revize: 2

Váš názor