phpbar.de logo

Mailinglisten-Archive

[php] XML

[php] XML

Peter Bieling network at media-palette.de
Don Mar 11 08:32:14 CET 2004


Hallo,

> ich suche ein GANZ EINFACHES Beispiel, um xml-dateien auszulesen.
> 
> XML-datei:
> 
> <?xml version="1.0" encoding="iso-8859-1"?>
> 
> <php>
>     <eintrag id="0">
>         <thema>abc</thema>
>         <kbeschreibung>E-Mail</kbeschreibung>
>         <syntax>mail()</syntax>
>         <beispiel>
>             <z1>daten1</z1>
>             <z2>daten2</z2>
>             <z3>daten3</z3>
> 	       </beispiel>
>     </eintrag>
>     <eintrag id="1">
>     s.o.
>     </eintrag>
> </php>
> 
> Wie kann ich jetzt unter <beispiel>, <z1> auslesen?

z.B. so:
<?php
require_once("xml-line-01-76.php");
//Quelle: http://www.media-palette.de/xml-line.zip
$mylines = new xml_line("php.xml"); //Deine Datei
$mylines->get_data(0,"z1");
$result=$mylines->xml_stream();
printf("Der Inhalt von Element z1 ist <b>%s</b>.", $result[0][0][0]);
?>

Wenn Du mehrere z1-Elemente hast, kannst Du auch den ganzen Elementpfad 
angeben:
$mylines->get_data(0,"php/eintrag/beispiel/z1");

Wenn es dann noch mehrere z1 im gleichen Elementpfad gibt, kannst Du 
auch zählen:
$mylines->get_data(0,"php/eintrag/beispiel/z1","","","1-1-1-1");

Mit den übrigen (hier leeren) Parametern kannst Du noch Text vorgeben, 
der im Elementwert enthalten sein soll oder nach bestimmten Attributen, 
die im Element enthalten sein müssen, damit das Ergebnis passt.

> Oder, wie kann ich die Werte unter <eintrag> mit der 'id' = 1 auslesen?

Du möchtest hier sicherlich den ganzen "Datensatz" haben?
	$mylines->get_data(0,"eintrag","",array('id'=>0));
kann das gesuchte Element ausfindig machen. Das hilft Dir aber nicht 
weiter, weil Du nur den Whitspace als Ergebnis enthältst, also alles 
das, was zwischen <eintrag> und dem nachsten Element steht.

Die Elemente unterhalb von "eintrag" würde man mit "php/eintrag/*" 
finden. (Die Attributvorgabe würde sich dann aber auf die 
untergeordneten Elemente beziehen.)

Das Einlesen untergeordneter Elemente und Inhalte ist zur Zeit noch 
nicht in der Klasse implementiert. Das ist aber eine wichtige Sache, die 
ich daher auch kurzfristig einrichten werde, weil ich sie selbst auch 
vermisse.

Viele Grüße

Peter

-- 
http://www.media-palette.de






php::bar PHP Wiki   -   Listenarchive