2012-10-17 78 views
0

可能重复:
PHP namespace simplexml problems充分利用XML标记的属性与命名空间

我作为XML的一部分:

<item> 
    <source url="eurosport.com">Eurosport</source> 
    <media:content url="http://media.zenfs.com/en_GB/Sports/Eurosport/900589-15042881-640-360.jpg" type="image/jpeg" width="130" height="86" /> 
</item> 

我使用的SimpleXMLElement ()将文本XML数据转换为SimpleXML元素对象。通过我可以访问item作为$item

我需要获得urlmedia:content,我无法做到这一点。谁能帮我吗?

PS:想这一点,但它并没有帮助..为SimpleXMLElement()

var_export($item->xpath('media:content')); 
+1

你试过简单的'$ item - > {'content'}'?许多简单的解析器只需要节点名称...如果您愿意,可以使用前缀或NS,但通常不需要。 – jheddings

+0

@jdingdings:刚刚尝试过。回路没有被输入 –

+0

@jdingdings是正确的,请参阅http://codepad.viper-7.com/J4cn9r – Phil

回答

1

使用XPath()方法正确的命名空间:

foreach ($item->children('media', true)->content->attributes() as $key => $val) { 
     return (string)$val; 
} 
+1

为什么大家都认为你需要XPath来在SimpleXML中使用名称空间?你绝对不会。 – IMSoP

1

您需要使用->children()方法选择的

foreach ($item->{'media:content'}->attributes() as $key => $val) { 
     return (string)$val; 
}