2016-07-06 20 views
0

名前空間属性を含むノードを選択するときに、他の属性を取得するにはどうすればよいですか?SimpleXML:名前空間属性を含むノードを選択するときに、他の属性を取得するにはどうすればよいですか?

私はxlink:hrefのSVGを持っていますが、id属性にアクセスしようとしていますが、xpathを使用すると「属性ノード」しか返されないようです。実際の「要素ノード」を取得するにはどうすればよいですか?

$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); 
} 

出力:

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

https://3v4l.org/lvILL

答えて

0

[OK]を、私はそれを考え出しました。正しいXPathは次のとおりです。

$images = $xml->xpath('//svg:image[@xlink:href]'); 

https://3v4l.org/NTcvP

関連する問題