2012-10-06 7 views
0

은 내가하위 요소

$dom = new DOMDocument; 
$dom->loadXML($resp); 
$xpath = new DOMXPath($dom); 
$xpath->registerNamespace('ns2', 'http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd'); 
$xpath->registerNamespace('a', 'http://mws.amazonservices.com/schema/Products/2011-10-01'); 

foreach($xpath->query('//a:Product') as $product){ 
    echo $product->query('//ns2:ItemAttributes/ns2:Author')->item(0)->nodeValue 
} 

내가 지금 실현 모든 제품의 태그를 통해 루프를 시도하고 다음과 같은 기능을 사용하여 http://chris.photobooks.com/xml/default.htm?state=8T

과 같은 구조에서 데이터를 추출하는 것을 시도하고있다 이것은 for 루프 내에서 데이터를 추출하는 잘못된 방법이지만 올바른 방법은 무엇입니까? 특정 태그를해야하는 경우

답변

1

난 당신이 내가 전에 그것을 밖으로 시도하는의 수 있으면 좋겠다

foreach($xpath->query('//a:Product') as $product){ 
    echo $xpath->query('.//ns2:ItemAttributes/ns2:Author', $product)->item(0)->textContent 
} 
+0

를 원하는 생각하지만, 난 그냥 모든 네임 스페이스를 대체 할 않는 str_replace()를 사용하여 저렴하고 더러운 방법을 갔다. 어쨌든 고마워. –

1

, 당신은 할 수 있습니다 :

$dom = new DOMDocument; 
$dom->loadXML($resp); 

foreach($dom->getElementsByTagName("Product") as $product){ 
    echo $product->getElementsByTagName("Author")->item(0)->nodeValue."<br />"; 
} 

를 그렇지 않으면 (당신이 전체 데이터를 필요로하는 경우) 간단한 배열/객체로 전체 XML 변환을위한 커뮤니티 제작 솔루션이 있습니다.