使用PHP中的simple_load_xml选择具有相同名称的xml元素

时间:2011-12-06 12:32:19

标签: php xml simplexml

我有一个像这样的XML(简化):

<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将无效。

2 个答案:

答案 0 :(得分:2)

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

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

$campaigns = $xml->children();

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

答案 1 :(得分:0)

你可以这样做: -

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

或(是图像节点的列表,因此访问数组的正常方式是可行的)

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