求救,用SimpleXML读不出namespace里的值

我在尝试用simpleXML来解析atom1.0格式里的数据,结果遇到了读不出数据的问题。

下面是atom的源代码:
<atom:id gr:original-id=”http://huijia.org/?p=30>tag:google.com,2005:reader/item/524195038eba942c</atom:id>

上面的代码里有两个名称空间(namespace),一个是gr

‘gr’ => ‘http://www.google.com/schemas/reader/atom/’,
另一个是atom
‘atom’ => ‘http://www.w3.org/2005/Atom’

我想把original-id的值读出来,也就是要读到 http://huijia.org/?p=30 的值,这个值实际上是blog的永久链接,但我尝试多个办法都失败了,不过我能用print_r()打印出来

echo ‘<pre>’;
print_r($details->id->children(‘http://www.google.com/schemas/reader/atom/’));
echo ‘</pre>’;

显示结果如下:

SimpleXMLElement Object
(
[@attributes] => Array
(
[original-id] => http://huijia.org/?p=30
)

)
我尝试用 
$temmppp =  $details->id->children(‘http://www.google.com/schemas/reader/atom/’);
echo $temmppp->{“original-id”};
echo $temmppp[“original-id”];
都无法输出永久链接的地址。
whentp 教我转换对象为数组的办法:
$tmp = (array)($temmppp->attributes());

echo $tmp[“original-id”];
也无法取得正确的数值。

不过,同样的方法却在另一个
<atom:link href=”http://huijia.org rel=”alternate type=”text/html/>
命名空间的属性值能读出来。
echo $entry->children(‘http://www.w3.org/2005/Atom’)->link->attributes()->href;

打印
print_r( $details->link->attributes());
的结果也跟前面的差不多啊,

SimpleXMLElement Object
(
[@attributes] => Array
(
[href] => http://huijia.org/2009/01/20/hanleiquanmaihuochepiaodepimin/
[rel] => alternate
[type] => text/html
)

)

怎么用一样的方法在这里能读出数值呢,在前面那个情况下却读不出来呢?这是怎么回事呢?求高人指点。

仍然搜索不到结果,我把这个问题发到 http://stackoverflow.com/questions/19372302/cant-get-namespace-original-id-value-by-simplexml 

来自周曙光的BLOGSPOT空间

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据