Abfragemethode get_data() und Zugriff auf die Ergebnisse

Test-XML-file

<?xml version="1.0" encoding="ISO-8859-1"?>
<nahrungsmittel>
  -  <vegetarisch>
  -     -  <obst>Apfel</obst>
  -     -  <obst>Birne</obst>
  -     -  <obst>Himbeere</obst>
  -     -  <gemuese preis="gut">Möhre</gemuese>
  -     -  <gemuese>Kopfsalat</gemuese>
  -     -  <gemuese>Tomate</gemuese>
  -  </vegetarisch>
  -  <fleisch>
  -     -  <schwein>Schnitzel</schwein>
  -     -  <rind>Gulasch</rind>
  -  </fleisch>
</nahrungsmittel>

In diesem Beispiel werden mehrere Abfragen auf einmal durchgeführt

Der Einfachheit halber wird in diesem Beispiel das Ergebnis jeder Abfrage auf 1 limitiert.


<?php
require_once("../xml-line.php");
$mylines = new xml_line("xml-files/obst.xml");
//Abfrage 1 (bekommt Index [0])
//Alles finden, was den String "Him" enthält
$mylines->get_data(1,"","Him");
//Abfrage 2 (bekommt Index [1])
//Genau ein bestimmtes Obst-Element finden
//nahrungsmittel[1]/vegetarisch[1]/obst[2]
$mylines->get_data(1,"nahrungsmittel/vegetarisch/obst","","","1-1-2");
//Abfrage 3 (bekommt Index [2])
//Welches Obst hat einen guten Preis?
$mylines->get_data(1,"gemuese","",array("preis" => "gut"));
$result = $mylines->xml_stream();
?>

Ergebnis:


<?php
printf("<p>Welcher Eintrag enthält <i>Him</i>?<br>
           Ergebnis von Suche 1 ist <b>%s</b>.</p>",
           $result[0][0][0]);

printf("<p>Welchen Wert hat das Element
           <i>nahrungsmittel[1]/vegetarisch[1]/obst[2]</i>?<br>
           Ergebnis von Suche 2 ist <b>%s</b>.</p>",
           $result[1][0][0]);

printf("<p>Welches Gemüse hat einen guten Preis (preis=&quot;gut&quot;)?
           <br>Ergebnis von Suche 3 ist <b>%s</b>.</p>",
           $result[2][0][0]);
?>

Welcher Eintrag enthält Him?
Ergebnis von Suche 1 ist Himbeere.

Welchen Wert hat das Element nahrungsmittel[1]/vegetarisch[1]/obst[2]?
Ergebnis von Suche 2 ist Birne.

Welches Gemüse hat einen guten Preis (preis="gut")?
Ergebnis von Suche 3 ist M.