提问人:Designer015 提问时间:2/21/2023 最后编辑:IMSoPDesigner015 更新时间:2/21/2023 访问量:44
在 XML 中下载同名图像 [已关闭]
Download images with the same name in XML [closed]
问:
我正在尝试下载产品图片或获取 XML 格式的文件路径。我在使用同名时遇到了麻烦。谢谢。
XML 文件
-<products>
-<product>
<product_code>AXX-655</product_code>
<product_name>Samsung Led TV</product_name>
-<Images>
<Image>https://max.cloud/37233/products-77d4.jpg</Image>
<Image>https://max.cloud/37233/products-254789.jpg</Image>
<Image>https://max.cloud/37233/products-f010.jpg</Image>
<Image>https://max.cloud/37233/products-8004.jpg</Image>
</Images>
-</product>
-<product>
<product_code>ACH-645</product_code>
<product_name>LG Led TV</product_name>
-<Images>
<Image>https://max.cloud/37233/products-895777.jpg</Image>
<Image>https://max.cloud/37233/products-3652.jpg</Image>
<Image>https://max.cloud/37233/products-k0120.jpg</Image>
</Images>
-</product>
-</products>
我正在尝试按产品ID或产品名称下载产品图片 PHP文件
$xml = simplexml_load_file($xmllocalurl) or die("Error: Cannot create object");
foreach ($xml->children() ->children() as $child) {
$name = $child->product_name;
$url = $child->Images->Image;
$img = 'imgfiles/'.$name.'.jpg';
$url = $child->product_name;
file_put_contents($img, file_get_contents($url));
答:
0赞
Jack Fleeting
2/21/2023
#1
由于您正在处理 xml,因此最好使用 xpath 来提取我认为是您的目标数据。
下面只是提供数据;然后,您可以根据需要保存它:
$items = $xml->xpath('//product');
foreach ($items as $item) {
$name = $item->xpath('./product_name')[0];
$code = $item->xpath('./product_code')[0];
$images = $item->xpath('.//Image/text()');
echo $name," " ,$code," " ;
foreach ($images as $image) {
echo $image , " ";
}
echo "\r\n";
};
输出(基于示例 XML):
Samsung Led TV AXX-655 https://max.cloud/37233/products-77d4.jpg https://max.cloud/37233/products-254789.jpg https://max.cloud/37233/products-f010.jpg https://max.cloud/37233/products-8004.jpg
LG Led TV ACH-645 https://max.cloud/37233/products-895777.jpg https://max.cloud/37233/products-3652.jpg https://max.cloud/37233/products-k0120.jpg
评论
0赞
Jack Fleeting
2/21/2023
@Designer015 不知道他们为什么关闭你的问题,但很高兴它对你有用。另外,请不要忘记接受答案。
0赞
Designer015
2/23/2023
由于我是新会员,我不知道如何充分利用该网站。我应该在哪里接受?
0赞
Jack Fleeting
2/23/2023
@Designer015没关系,我们都去过一次!“要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰色切换为已填写。”
评论