2011-12-06 113 views
1

我有一个XML(简化)这样的:选择XML元素具有相同名称与simple_load_xml在PHP

<article> 
    <title>My Article</title> 
    <image src="someurl.jpg" /> 
    <image src="someotherurl.jpg" /> 
</article> 

如何选择<image>元素?他们有相同的名字。要选择<title>我只是这样做:

$xml = simplexml_load_file("theurltomyxml.xml"); 
$article = $xml->article; 
$title = $article->title; 

但我怎么得到的图像?他们有相同的名字!只写$article->image将无法​​正常工作。

回答

0

你可以这样做: -

foreach ($xml->xpath("/article/image") as $img) 
{ 
    ... 
} 

或(是图像节点的列表,以便访问阵列的常规方法是可行的)

$xml->image[0]; 
$xml->image[1]; 
+0

第二种解决方案:是的,但只有当我知道元素的数量。我不这样做。如果元素数量未知,我该怎么办? – Weblurk

+0

使用第一个循环 – ajreal

2

我知道这是一个老问题/答案但我有一个类似的问题,并通过使用第二个解决方案,通过对我自己进行一些调整而得到解决。我有一系列顶级节点(xml没有正确格式化,没有将元素分割成父节点 - 不受我控制)。所以我使用了一个for循环来计算元素,然后使用ajreal的解决方案来回显我想要的$ i迭代所需的内容。

我的使用与上面有点不同,所以我试图改变它以使它与您的图像问题更相关。如果我犯了错误,请让我知道。

$campaigns = $xml->children(); 

for($i=0;$i<=$campaigns->count();$i++){ 
    echo $campaigns[$i]->article->title . $campaigns[$i]->article->image[0]; 
} 
相关问题