2016-07-06 6 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

, 나는 그것을 알아 냈다. 올바른 XPath는 다음과 같습니다

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

https://3v4l.org/NTcvP