2016-07-06 53 views
0

Wie erhalte ich andere Attribute bei der Auswahl von Knoten, die ein Namespaced-Attribut enthalten?SimpleXML: Wie erhalte ich andere Attribute bei der Auswahl von Knoten, die ein Namespaced-Attribut enthalten?

Ich habe ein SVG mit xlink:href, und ich versuche, auf das id Attribut zuzugreifen, aber wenn Xpath verwendet, scheint es, nur einen "Attributknoten" zurückzugeben. Wie bekomme ich den eigentlichen "Elementknoten"?

$xml = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?> 
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
     <image id="my-image" xlink:href="http://example.com/image.png" /> 
    </svg> 
'); 
$xml->registerXPathNamespace('svg', 'http://www.w3.org/2000/svg'); 
$xml->registerXPathNamespace('xlink', 'http://www.w3.org/1999/xlink'); 
$images = $xml->xpath('//svg:image/@xlink:href'); 
foreach ($images as $image) { 
    var_dump($image); 
} 

Ausgang:

object(SimpleXMLElement)#2 (1) { 
    ["@attributes"]=> 
    array(1) { 
    ["href"]=> 
    string(28) "http://example.com/image.png" 
    } 
} 

https://3v4l.org/lvILL

Antwort