SimpleXML Objekt TagNamen auslesen
MarkusB
- php
Hallo wissende,
ich habe ein Problem eine XML Datei mit SimpleXML vollständig auszulesen. Die Datei ist ein LanguageFile und hat folgende Struktur:
<?xml version='1.0' encoding='ISO-8859-1'?>
<language>
<description>
<reloadTitle>Aktualisieren</reloadTitle>
<fileNewTitle>neue Datei Anlegen</fileNewTitle>
<dirNewTitle>neues Verzeichnis Anlegen</dirNewTitle>
<uploadTitle>Dateien Hochladen</uploadTitle>
...
</description>
</language>
Die Werte der XML Datei lassen sich mit folgendem Code dynamisch auslesen:
<?php
if (is_readable('../lang/ger.xml')) {
if ($xml = @simplexml_load_file('../lang/ger.xml')) {
foreach($xml->xpath('//language/description') as $child) {
$temp = $child->children();
for($i=0;$i<count($temp);$i++) {
echo $temp[$i]."<br>";
}
// -- Debug start
echo "<pre>";
print_r($child->children());
echo "</pre>";
// -- Debug finish
}
}
} else {
exit('Konnte ger.xml nicht öffnen.');
}
?>
Ich habe das Problem das ich auch die Knotennamen benötige, aber nicht weis wie ich diese Auslesen kann. Im SimpleXMLObjekt $child->children() werden die Knotennamen richtig angezeigt. Ich habe momentan irgendwie eine Logikblockade. Könnte mir jemand bitte den Beispielcode ergänzen, bitte.
danke schön
Markus
echo $begrüßung;
Ich habe das Problem das ich auch die Knotennamen benötige, aber nicht weis wie ich diese Auslesen kann.
Das PHP-Handbuch führt unter den SimpleXML Functions unter anderem auch SimpleXMLElement->getName() auf. Das scheint mir deine Aufgabe zu erfüllen.
echo "$verabschiedung $name";
Das PHP-Handbuch führt unter den SimpleXML Functions unter anderem auch SimpleXMLElement->getName() auf. Das scheint mir deine Aufgabe zu erfüllen.
...
danke für die schnelle Antwort, mit dieser Funktion habe ich auch schon experimentiert, aber leider nicht den Erfolg gehabt (was wohl an meinder fehlerhaften Anwendung liegt, sorry)
if (is_readable('../lang/ger.xml')) {
if ($xml = @simplexml_load_file('../lang/ger.xml')) {
foreach($xml->xpath('//language/description') as $child) {
$temp = $child->children()->getName();
for($i=0;$i<count($temp);$i++) {
echo $temp[$i]."<br>";
}
}
}
...
als Ausgabe kommt hier bei mir nur das Zeichen r
Könntest Du mir bitte nochmal auf die Sprünge helfen? Vielen Dank für Deine investierte Zeit.
Markus
Hi,
if (is_readable('../lang/ger.xml')) {
if ($xml = @simplexml_load_file('../lang/ger.xml')) {
foreach($xml->xpath('//language/description') as $child) {
$temp = $child->children()->getName();
for($i=0;$i<count($temp);$i++) {
echo $temp[$i]."<br>";
}
}
}
...
> als Ausgabe kommt hier bei mir nur das Zeichen r
Es moechte sich mit var\_dump ansehen, was sein $temp enthaelt.
MfG ChrisB
--
„This is the author's opinion, not necessarily that of Starbucks.“
Danke Euch beiden für die Hilfestellung, mit dem Konstrukt bekomme ich alle benötigten Informationen:
foreach($xml->xpath('//language/description') as $child) {
$temp = $child->children();
for($i=0;$i<count($temp);$i++) {
echo $temp[$i]."<br>";
}
foreach($child->children() as $a) {
echo $a->getName()."<br>";
}
}
danke und baldigen Feierabend
Markus