1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-31 03:32:12 +02:00
Files
archived-doc-de/reference/simplexml/examples.xml
Carola 'Sammy' Kummert 01de7b41b7 sync to en
git-svn-id: https://svn.php.net/repository/phpdoc/de/trunk@268858 c90b9560-bf6c-de11-be94-00142212c4b1
2008-11-12 12:20:47 +00:00

324 lines
8.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 1.2 $ -->
<!-- EN-Revision: 1.3 Maintainer: sammywg Status: ready -->
<chapter xml:id="simplexml.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<section xml:id="simplexml.examples-basic">
<para>
Viele Beispiele in dieser Referenz benötigen einen XML-String. Anstatt
diesen String in jedem Beispiel zu wiederholen, haben wir ihn als File
abgelegt, das wir in den Beispielen inkludieren. Diese eingebundene Datei
zeigen wir Ihnen im folgenden Beispiel. Alternativ dazu können Sie ein
XML-Dokument erstellen und es mit <function>simplexml_load_file</function>
einlesen.
</para>
<para>
<example>
<title>Einzubindende Datei example.php mit XML-String</title>
<programlisting role="php" xml:id="simplexml.examples.movie">
<![CDATA[
<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<movies>
<movie>
<title>PHP: Behind the Parser</title>
<characters>
<character>
<name>Ms. Coder</name>
<actor>Onlivia Actora</actor>
</character>
<character>
<name>Mr. Coder</name>
<actor>El Act&#211;r</actor>
</character>
</characters>
<plot>
So, this language. It's like, a programming language. Or is it a
scripting language? All is revealed in this thrilling horror spoof
of a documentary.
</plot>
<great-lines>
<line>PHP solves all my web problems</line>
</great-lines>
<rating type="thumbs">7</rating>
<rating type="stars">5</rating>
</movie>
</movies>
XML;
?>
]]>
</programlisting>
</example>
</para>
<para>
Die Einfachheit von SimpleXML ist besonders deutlich erkennbar, wenn man
einen String oder eine Zahl aus einem XML Dokument extrahieren will.
<example>
<title><literal>&lt;plot&gt;</literal> ermitteln</title>
<programlisting role="php"><![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie[0]->plot; // "So this language. It's like..."
?>
]]>
</programlisting>
</example>
</para>
<para>
Um auf Elemente in einem XML-Dokument zuzugreifen, die Zeichen enthalten,
die nicht dem PHP-Benennungsstandard entsprechen (z.B. der Bindestrich),
können Sie den Elementnamen zwischen geschweifte Klammern und
einfachen Anführungszeichen einschließen.
<example>
<title>Auf <literal>&lt;line&gt;</literal> zugreifen</title>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie->{'great-lines'}->line; // "PHP solves all my web problems"
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Auf nicht-eindeutige Elemente per SimpleXML zugreifen</title>
<simpara>
Existieren mehrere Instanzen eines Elements als Kinder eines einzigen
Elternelements, lassen sich normale iterative Techniken einsetzen.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* Für jeden <movie> Knoten geben wir ein separates <plot> aus. */
foreach ($xml->movie as $movie) {
echo $movie->plot, '<br />';
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Attribute verwenden</title>
<simpara>
Bis jetzt haben wir nur das Auslesen von Elementnamen und ihrer Werte
betrachtet. SimpleXML kann aber auch auf die Attribute eines Elements
zugreifen. Der Zugriff auf die Attribute eines Elements funktioniert
genauso, als würden Sie die Elemente eines <type>Array</type>
ansprechen.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* Zugriff auf die <rating> Knoten des ersten Films
* Die Bewertungsskala wird zusätzlich ausgegeben. */
foreach ($xml->movie[0]->rating as $rating) {
switch((string) $rating['type']) { // Verwende Attribute als Element-Indizes
case 'thumbs':
echo $rating, ' thumbs up';
break;
case 'stars':
echo $rating, ' stars';
break;
}
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Vergleichen von Elementen und Attributen mit Text</title>
<simpara>
Um ein Element oder ein Attribut mit einem String zu vergleichen oder an
eine Funktion zu übergeben, die einen String als Parameter benötigt,
müssen Sie das Element respektive das Attribut in einen String casten.
Verwenden Sie dafür <literal>(string)</literal>, ansonsten behandelt PHP
das Element als Objekt.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
if ((string) $xml->movie->title == 'PHP: Behind the Parser') {
print 'Mein Lieblingsfilm.';
}
htmlentities((string) $xml->movie->title);
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Zwei Elemente vergleichen</title>
<simpara>
Zwei SimpleXMLElements können ab PHP 5.2.0 auch dann als unterschiedlich
betrachtet werden, wenn sie auf das gleiche Element zeigen.
</simpara>
<programlisting role="php"><![CDATA[
<?php
$el1 = new SimpleXMLElement($xmlstr);
$el2 = new SimpleXMLElement($xmlstr);
var_dump($el1 == $el2); // false ab PHP 5.2.0
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>XPath verwenden</title>
<simpara>
SimpleXML verfügt über einen eingebauten <acronym>XPath</acronym>-Support. So
finden Sie alle <literal>&lt;character&gt;</literal> Elemente:
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
foreach ($xml->xpath('//character') as $character) {
echo $character->name, 'gespielt von ', $character->actor, '<br />';
}
?>
]]>
</programlisting>
<simpara>
'<literal>//</literal>' wird hier als Wildcard verwendet. Um absolute
Pfadangaben zu verwenden, lassen Sie einen der Slashe weg.
</simpara>
</example>
</para>
<para>
<example>
<title>Werte setzen</title>
<simpara>
Die Daten in SimpleXML müssen nicht konstant sein. Das Objekt erlaubt
die Veränderung all seiner Elemente.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$xml->movie[0]->characters->character[0]->name = 'Miss Coder';
echo $xml->asXML();
?>
]]>
</programlisting>
<simpara>
Der vorstehende Code erzeugt ein neues XML-Dokument gleich dem Original,
mit der Ausnahme, dass das neue XML von Ms. Coder auf Miss Coder verändert
wurde.
</simpara>
</example>
</para>
<para>
<example>
<title>Elemente und Attribute hinzufügen</title>
<simpara>
Seit PHP 5.1.3 verfügt SimpleXML über eine vereinfachte Möglichkeit,
Kindelemente und Attribute hinzuzufügen.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$character = $xml->movie[0]->characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');
$rating = $xml->movie[0]->addChild('rating', 'PG');
$rating->addAttribute('type', 'mpaa');
echo $xml->asXML();
?>
]]>
</programlisting>
<simpara>
Die obige Code gibt ein XML-Dokument aus, das auf dem Original basiert,
aber einen neuen Charakter und ein weiteres Rating enthält.
</simpara>
</example>
</para>
<para>
<example>
<title>DOM Interoperabilität</title>
<simpara>
PHP hat einen Mechanismus, um XML-Knoten zwischen dem SimpleXML und dem
DOM Format zu konvertieren. Das Beispiel zeigt, wie man ein DOM Element
in SimpleXML verwandelt.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
$dom = new domDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!$dom) {
echo 'Fehler beim Parsen des Dokuments';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->book[0]->title;
?>
]]>
</programlisting>
</example>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->