我已经解析了一个在线xml文件。 check online link Here。
上面url Feed的示例xml文件如下所示:
的 test1.xml
<products>
<item>
<id>1375</id>
<option name="Colour">
<value optionID="128" quantity="2">Navy|+|0.00</value>
<value optionID="128" quantity="1">Red|+|0.00</value>
</option>
</item>
<item>
<id>1375</id>
<option name="Sixer">
<value optionID="128" quantity="2">Medium|+|0.00</value>
<value optionID="128" quantity="1">Large|+|0.00</value>
</option>
</item>
</products>
我使用simplexml_load_file
像:
$xml = simplexml_load_file('test1.xml');
foreach($xml as $product)
{
echo $product->id;
}
我得到了Id作为输出。
但我的问题是如何在foreach循环中获得颜色和大小的价值。
我目前正在使用
foreach ($product->xpath('//option[@name="Colour"]') as $item)
{
foreach ($item->children() as $child)
{
echo "color"."<br>";
}
}
foreach ($product->xpath('//option[@name="Size"]') as $item)
{
foreach ($item->children() as $child)
{
echo "Size"."<br>";
}
}
但它会找到所有选项name =“color”&amp;所有产品的选项名称=“尺寸”
我想找到产品ID作为输出的特定产品的选项值。
答案 0 :(得分:1)
$xml = simplexml_load_file('http://www.devilwear.co.uk/store/feeds/dwfeed_item_dropship.xml');
$item='35282';
foreach($xml as $product) {
$id=$product->id;
if($id==$item) {
$attr = $product->option->attributes();
if($attr['name']=='Colour') {
foreach($product->option->children() as $value){
echo $value;
}
}
}
}
类似于尺寸和其他选项......
答案 1 :(得分:0)
此处$toFind
变量将保留找到的产品ID,请尝试
$xml = simplexml_load_string($str);
$toFind = 1376;
$items = $xml->xpath('/products/item');
$result = array();
foreach($items as $it){
if($it->id == $toFind){
$temp=array();
$temp['id'] = (string) $it->id;
$option = $it->option;
foreach( $option->attributes() as $key=>$val){
$temp['option_name'] = (string)$val;
foreach($option->children() as $optChild){
foreach( $optChild->attributes() as $key1=>$val1){
$temp['option_value'][(string)$key1] = (string)$val1;
}
}
}
$result[] = $temp;
}
}
请参阅演示here