ebody: XML Objekt - Element mit bestimmtem Attribut und Attributwert "ansprechen"

Hallo,

wie kann man auf ein Element mit einem bestimmtem Attribut und Attributwert zugreifen? Ich habe schon einige Dinge probiert, aber keine funktioniert.

Beispiel:

XML - file.xml:

<verzeichnis>
     <titel>Wikipedia Städteverzeichnis</titel>
     <eintrag name="Hörbuch">
          <stichwort>Genf</stichwort>
          <eintragstext>Genf ist der Sitz von ...</eintragstext>
     </eintrag>
     <eintrag name="Buch">
          <stichwort>Köln</stichwort>
          <eintragstext>Köln ist eine Stadt, die ...</eintragstext>
     </eintrag>
</verzeichnis>

PHP:

$xmlFile = "file.xml";

if($xml = simplexml_load_file($xmlFile)){

	// $xmlValue = $xml->verzeichnis->eintrag->attributes("name,"Buch")->stichwort;
	// $xmlValue = $xml->verzeichnis->eintrag->attributes("name=Buch")->stichwort;
	// $xmlValue = $xml->verzeichnis->eintrag->attributes({name="Buch"})->stichwort;
	// $xmlValue = $xml->verzeichnis->eintrag[name="Buch"]->stichwort;
	// $xmlValue = $xml->verzeichnis->eintrag[{name="Buch"}]->stichwort;
	// $xmlValue = $xml->verzeichnis->eintrag["name"="Buch"]->stichwort;
	// $xmlValue = $xml->verzeichnis->eintrag["name=Buch"]->stichwort;
	echo $xmlValue;

}

Gruß ebody

  1. Tach!

    wie kann man auf ein Element mit einem bestimmtem Attribut und Attributwert zugreifen?

    Entweder durch alle Atribute laufen und selbst filtern oder eine XPath-Query absetzen.

    Ich habe schon einige Dinge probiert, aber keine funktioniert.

    Im Allgemeinen funktionieren nur die Dinge, die im Handbuch beschrieben sind und keine Phantasiesyntax.

    dedlfix.

    1. @@dedlfix

      Ich habe schon einige Dinge probiert, aber keine funktioniert.

      Im Allgemeinen funktionieren nur die Dinge, die im Handbuch beschrieben sind und keine Phantasiesyntax.

      „2 Stunden ausprobieren können Ihnen 10 Minuten Handbuchlesen sparen.“ —Linda, 231

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  2. Hi,

    $xmlFile = "file.xml";
    
    if($xml = simplexml_load_file($xmlFile)){
    
    	// $xmlValue = $xml->verzeichnis->eintrag->attributes("name,"Buch")->stichwort;
    	// $xmlValue = $xml->verzeichnis->eintrag->attributes("name=Buch")->stichwort;
    	// $xmlValue = $xml->verzeichnis->eintrag->attributes({name="Buch"})->stichwort;
    	// $xmlValue = $xml->verzeichnis->eintrag[name="Buch"]->stichwort;
    	// $xmlValue = $xml->verzeichnis->eintrag[{name="Buch"}]->stichwort;
    	// $xmlValue = $xml->verzeichnis->eintrag["name"="Buch"]->stichwort;
    	// $xmlValue = $xml->verzeichnis->eintrag["name=Buch"]->stichwort;
    	echo $xmlValue;
    
    }
    

    War das nicht so, daß $xml da schon das Wurzelelement ist?

    Zugriff wäre dann $xml->eintrag…

    cu,
    Andreas a/k/a MudGuard

  3. Hallo ebody,

    wie kann man auf ein Element mit einem bestimmtem Attribut und Attributwert zugreifen? Ich habe schon einige Dinge probiert, aber keine funktioniert.

    XPath-Ansatz:

    $xmlValue = $xml->xpath("eintrag[@name='Buch']/stichwort"); // Array
    echo $xmlValue[0]; // Köln
    
    

    Grüße,
    Thomas