0

我只是想从下面的 XML 代码中获取 URL 值。我在通过类别参数时遇到问题:

<ImageSets>
    <ImageSet Category="primary">
        <SwatchImage>
            <URL>www.url.jpg</URL>
        </SwatchImage>
    </ImageSet>
</ImageSets>

我搜索了,但没有找到类似的问题;它们都以参数标签结尾;它们不会下降到另一个节点级别。我尝试了这段代码,但收到的错误消息不是很直观:

ImageSets->ImageSet->attributes()->Category['primary']->SwatchImage->URL

任何帮助将不胜感激。提前致谢!

4

3 回答 3

1

我不确定我的问题是否正确,但我会这样做:

$xml=simplexml_load_file("file.xml");
echo $xml->ImageSet[0]->SwatchImage->URL;

它修复它吗?万一给我更多数据,以便我可以编辑代码。虽然对我有用。

于 2013-07-07T13:19:45.760 回答
1

用于xpath完成simplexml工作:

$xml = simplexml_load_string($x); // assuming XML in $x

$urls = $xml-xpath("//imageset[@Category = 'primary']/SwatchImage/URL");

xpath语句将选择所有具有属性<URL>的s下的所有s并将其存储在数组中。<imageset>Category = primary$urls

foreach ($urls as $url) echo "$url<br />"; // output all

如果您只需要第一个<URL>(PHP >= 5.4):

$url = (string)$xml-xpath("//imageset[@Category = 'primary']/SwatchImage/URL")[0];
于 2013-07-07T17:37:06.207 回答
0

URL如果您的要求是获取ImageSetwhich has Category="primary",那么您可以这样获取:

$xml = simplexml_load_string("<?xml version='1.0' ?>
    <ImageSets>
        <ImageSet Category='primary'>
            <SwatchImage>
                <URL>www.url.jpg</URL>
            </SwatchImage>
        </ImageSet>
    </ImageSets>
    ");

$primary_url = '';
foreach ($xml->ImageSet as $set) {
    if ($set->attributes()->Category == 'primary') {
        $primary_url = $set->SwatchImage->URL;
        break;
    }
}
echo $primary_url;
于 2013-07-07T13:47:00.320 回答