2012-05-19 34 views
0

我解析外部Atom提要,一些條目有一個名稱空間子集合 - 我無法從這些子項檢索屬性。縮寫示例:PHP SimpleXml - 檢索命名空間子女的屬性

$feed = <<<EOD 
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:ai="http://activeinterface.com/thincms/2012"> 
    <entry> 
    <title>Some Title</title> 
    <ai:image>path/to/some/image</ai:image> 
    <ai:ocurrence dateid="20120622" date="Fri, June 22, 2012" time="6:00 pm" /> 
    <ai:ocurrence dateid="20120720" date="Fri, July 20, 2012" time="6:00 pm" /> 
    </entry> 
</feed> 
EOD; 


$xml = new SimpleXmlElement($feed); 
foreach ($xml->entry as $entry){ 
    echo $entry->title; 
    $namespaces = $entry->getNameSpaces(true); 
    $ai = $entry->children($namespaces['ai']); 
    echo $ai->image; 
    foreach($ai->ocurrence as $o){ 
    echo $o['date']; 
    } 
} 

一切,但孩子們命名空間的屬性檢索工作正常 - 如果孩子的標記名沒有命名空間,它工作正常。如果抓取節點值(而不是屬性),即使命名空間,它也能正常工作。我錯過了什麼?

+1

一個downvote至少應該有一個解釋... – momo

回答

0

試試這個

$xml = new SimpleXmlElement($feed); 
    foreach ($xml->entry as $entry) 
    { 

     $namespaces = $entry->getNameSpaces(true); 
     $ai = $entry->children($namespaces['ai']); 

     foreach ($ai->ocurrence as $o) 
     { 
      $date=$o->attributes(); 
      echo $date['date']; 
      echo "<br/>"; 
     } 
    } 
0

不知道爲什麼,但顯然數組訪問不會在這裏工作...需要的屬性方法:

echo $o->attributes()->date;