Heim > Backend-Entwicklung > XML/RSS-Tutorial > Eine ausführliche Einführung, die Ihnen zeigt, wie Sie schnell Informationen aus einer XML-Datei finden

Eine ausführliche Einführung, die Ihnen zeigt, wie Sie schnell Informationen aus einer XML-Datei finden

黄舟
Freigeben: 2017-03-06 16:35:06
Original
2634 Leute haben es durchsucht

Im Internetzeitalter spielen XML-Dateien eine Rolle beim Speichern und Übertragen von Daten. Das Soap-Protokoll kommuniziert Informationen über XML und der Zugriff auf die Datenbank erfolgt über XML-Dateien usw. Wie erhält man also schnell die benötigten Informationen aus einer XML-Datei?

Wir wissen, dass sowohl Javas JAXP als auch Microsoft.Net über XML-Parser beim Lesen verfügen, während JAXP es in den Speicher einliest und es dann analysiert (es gibt auch einen Ereignismechanismus zum Lesen). kurz, ist nicht förderlich für schnelles Lesen. Auf dieser Grundlage stellen sowohl Microsoft.Net als auch JAXP den XPATH-Mechanismus bereit, um die erforderlichen Knoten in der XML-Datei schnell zu finden.

Zum Beispiel gibt es eine XML-Datei: booksort.xml:

<?xml version="1.0"?>

<!-- a fragment of a book store inventory database -->

<bookstore xmlns:bk="urn:samples">

<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">

<title>PRide And Prejudice</title>

<author>

<first-name>Jane</first-name>

<last-name>Austen</last-name>

</author>

<price>24.95</price>

</book>

<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">

<title>The Handmaid&#39;s Tale</title>

<author>

<first-name>Margaret</first-name>

<last-name>Atwood</last-name>

</author>

<price>29.95</price>

</book>

<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">

<title>Emma</title>

<author>

<first-name>Jane</first-name>

<last-name>Austen</last-name>

</author>

<price>19.95</price>

</book>

<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">

<title>Sense and Sensibility</title>

<author>

<first-name>Jane</first-name>

<last-name>Austen</last-name>

</author>

<price>19.95</price>

</book>

</bookstore>
Nach dem Login kopieren

Wenn wir schnell alle Titelnamen finden möchten, bei denen „Nachname“ gleich „Austen“ ist, können wir Sie können es mit der folgenden Methode abrufen:

XmlReaderSample.cs

//Corelib.net/System.Xml.Xsl/XPathDocument Class

//Author :Any 


using System;

using System.IO;

using System.Xml;

using System.Xml.XPath;


public class XmlReaderSample

{

public static void Main()

{

XmlTextReader myxtreader = new XmlTextReader("booksort.xml");

XmlReader myxreader = myxtreader;

XPathDocument doc = new XPathDocument(myxreader);

XPathNavigator nav = doc.CreateNavigator();


XPathExpression expr; 

expr = nav.Compile("descendant::book[author/last-name=&#39;Austen&#39;]");


//expr.AddSort("title", XmlSortOrder.Ascending, XmlCaSEOrder.None, "", XmlDataType.Text);


XPathNodeIterator iterator = nav.Select(expr);

while (iterator.MoveNext())

{

XPathNavigator nav2 = iterator.Current;

nav2.MoveToFirstChild();

Console.WriteLine("Book title: {0}", nav2.Value);

}

}

}
Nach dem Login kopieren

Führen Sie dieses Programm aus. Das Ergebnis ist:

Book title: Pride And Prejudice

Book title: Emma

Book title: Sense and Sensibility
Nach dem Login kopieren

Sie können sehen, dass die Suche korrekt ist.

Mit einigen Funktionen in XPATH können Sie auch einfache Sortierungen und einfache Operationen implementieren. Wenn Sie häufig Daten in einer Datenbank zusammenfassen müssen, können Sie dies mit XPATH erreichen.

Zum Beispiel:

order.xml

<!--Represents a customer order-->

<order>

<book ISBN=&#39;10-861003-324&#39;>

<title>The Handmaid&#39;s Tale</title>

<price>19.95</price>

</book>

<cd ISBN=&#39;2-3631-4&#39;>

<title>Americana</title>

<price>16.95</price>

</cd>

</order>
Nach dem Login kopieren

und: Books.xml

<?xml version="1.0"?>

<!-- This file represents a fragment of a book store inventory database -->

<bookstore>

<book cc="dd" xmlns:bk="urn:sample" xmlns:ns="http://www.Any.com" genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">

<title>The Autobiography of Benjamin Franklin</title>

<ns:author>

<first-name>Benjamin</first-name>

<last-name>Franklin</last-name>

</ns:author>

<price>8.99</price>

</book>

<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">

<title>The Confidence Man</title>

<author>

<first-name>Herman</first-name>

<last-name>Melville</last-name>

</author>

<price>11.99</price>

</book>

<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">

<title>The Gorgias</title>

<author>

<name>Plato</name>

</author>

<price>9.99</price>

</book>

</bookstore>
Nach dem Login kopieren

Wir können die Preise in der XML-Datei summieren, um den Gesamtpreis zu erhalten.

Evaluate.cs

//Corelib.net/System.Xml.Xsl/XPathNavigator Class

//Author :Any 


using System;

using System.IO;

using System.Xml;

using System.Xml.XPath;



public class EvaluateSample

{

public static void Main()

{

EvaluateSample myEvaluateSample = new EvaluateSample();

myEvaluateSample.test("books.xml");

}


public void test(String args)

{

try

{

//test Evaluate(String);

XPathDocument myXPathDocument = new XPathDocument(args);

XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();

Console.WriteLine(myXPathNavigator.Evaluate("sum(descendant::book/price)"));


//testEvaluate(XPathExpression);

XmlDocument doc = new XmlDocument();

doc.Load("order.xml");

XPathNavigator nav = doc.CreateNavigator();

XPathExpression expr = nav.Compile("sum(//price/text())");

Console.WriteLine(nav.Evaluate(expr));


//testEvaluate(XPathExpression);


XPathNodeIterator myXPathNodeIterator = nav.Select("descendant::book/title");

expr = nav.Compile("sum(//price/text())");

Console.WriteLine(nav.Evaluate(expr,myXPathNodeIterator));


} 

catch (Exception e)

{

Console.WriteLine ("Exception: {0}", e.ToString());

}

}


}
Nach dem Login kopieren

Führen Sie dieses Programm aus und die Ergebnisse sind wie folgt:

30.97

36.9

36.9
Nach dem Login kopieren

Wir können sehen, dass 30,97 die Summe aller Preiswerte in Books.xml ist und 36,9 in order.xml Die Summe aller Preiswerte. Mit XPAH können Sie nicht nur schnell Informationen finden, sondern auch einige grundlegende Verarbeitungsschritte an den Informationen durchführen.

Das Obige ist eine detaillierte Einführung, die Ihnen zeigt, wie Sie schnell Informationen aus einer XML-Datei finden. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage