0

我有一个这样的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 以获得我想要的表?

4

1 回答 1

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 />";

} 

见现场演示:http ://codepad.viper-7.com/VL1hgw

S如果您自己制作XML,请以不同的方式制作,例如...

<item id="1">
    <name>VA</name>
    <size>S</size>
    <size>M</size>
    <size>L</size>
    <size>XL</size>
</item>
于 2013-04-09T17:48:44.940 回答