我正在努力阅读使用PHP的XML文件。从XML获取数据
我想使用的XML是在这里: http://www.gdacs.org/xml/rss.xml
现在,我很感兴趣的数据是“项目”节点。
我创建了下面的函数,它获取的数据:
$rawData = simplexml_load_string($response_xml_data);
foreach($rawData->channel->item as $value) {
$title = $value->title;
.... 能正常工作。
与节点“GDCS:XXXX”稍微更多的问题,但我用下面的代码,这也可以工作:
$subject = $value->children('dc', true)->subject;
现在我的问题是与“资源”节点,
基本上它的精简版是这样的:
<channel>
<item>
<gdacs:resources>
<gdacs:resource id="xx" version="0" source="xx" url="xx" type="xx">
<gdacs:title>xxx</gdacs:title>
</gdacs:resource>
<gdacs:resource id="xx" version="0" source="xx" url="xx" type="xx">
<gdacs:title>xxx</gdacs:title>
</gdacs:resource>
<gdacs:resource id="xx" version="0" source="xx" url="xx" type="xx">
<gdacs:title>xxx</gdacs:title>
</gdacs:resource>
</gdacs:resources>
</item>
</channel>
在这种情况下,我将如何获得资源?我始终能够获得第一个资源,只有它的标题。我想要做的是获得所有资源项目,它们具有特定值的“类型”并获取其URL。
这个工作,但问题是,我得到的所有网址,所有的项目,我需要到特定的URL分配给特定项目,如果你看看在整个文件中,XML包含许多“项目”节点,我需要为每个“项目”获取类型为“image”的资源的URL。您建议的解决方案会在整个XML文件中生成所有xx类型资源的数组,而不管它们属于哪个项目 – Jachym
为每个项目单独创建一个SimpleXMLElement,然后在循环中为每个项目运行xpath。您可以使用2个xpath语句 - >第一个获取所有项目,下一个使用上面的代码循环遍历结果 – DannyZB