我有像这样的xml
<catalogo>
<items>
<item>
<ID>1</ID>
<NAME>VA</NAME>
<SIZE>S</SIZE>
<GROUP>1,2,3,4</GROUP>
</item>
<item>
<ID>2</ID>
<NAME>VA</NAME>
<SIZE>M</SIZE>
<GROUP>l,2,3,4</GROUP>
</item>
<item>
<ID>3</ID>
<NAME>VA</NAME>
<SIZE>L</SIZE>
<GROUP>1,2,3,4</GROUP>
</item>
<item>
<ID>2</ID>
<NAME>VA</NAME>
<SIZE>XL</SIZE>
<GROUP>l,2,3,4</GROUP>
</item>
</items>
</catalogo>
TAG GROUP它指的是同一产品的所有ID,但TAG SIZE的值不同。
我想获得像这样的SQL表
id name size1 size2 size3 size4
1 va s m l xl
如何用php解析这个xml以获得我想要的表?
答案 0 :(得分:0)
假设您获得了XML并且无法更改它:
(1)读取XML,构建数组$c
,假设<NAME>
为<SIZE>s
链接。
代码将生成一个关联数组,其中key = <NAME>
和value = <SIZE>s
由|:["VA"] => string(9) "|S|M|L|XL"
分隔
$xml = simplexml_load_string($x);
$c = array();
foreach ($xml->items->item as $item) {
$n = (string)$item->NAME;
if (!isset($c[$n])) $c[$n]='';
$c[$n] .= "|". (string)$item->SIZE;
}
(2)将$c
写入表(数据库表?,HTML表?你决定......):
foreach ($c as $name => $sizes) {
$size = explode('|', trim($sizes,'|'));
$max = count($size);
// enter code for whatsoever table...
// echo for demonstration:
echo "--$name:-----<br />";
for ($i = 0; $i < $max; $i++) echo "size$i: {$size[$i]}<br />";
}
查看live-demo:http://codepad.viper-7.com/VL1hgw
如果您自己制作 XML,请将其设置为 ,例如......
<item id="1">
<name>VA</name>
<size>S</size>
<size>M</size>
<size>L</size>
<size>XL</size>
</item>