我正在解析外部 Atom 提要,某些条目具有命名空间子项的集合 - 我无法从这些子项中检索属性。 缩写示例:
$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'];
}
}
除了命名空间子项的属性检索之外的所有内容都可以正常工作 - 如果子项的标签名称未命名,则工作正常。 如果抓取节点值(而不是属性(,即使命名空间,它也可以正常工作。 我错过了什么?
试试这个
$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/>";
}
}
不知道
为什么,但显然数组访问在这里不起作用...... 需要属性方法:
echo $o->attributes()->date;