Php 使用包含多个信息的标记解析xml

Php 使用包含多个信息的标记解析xml,php,xml-parsing,Php,Xml Parsing,我有一个这样的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> <

我有一个这样的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>
  id name size1 size2 size3 size4
   1   va   s      m     l     xl

如何使用php解析此xml以获得所需的表?

假设您获得了xml并且无法更改它:

(1) 阅读XML,构建数组
$c
,假设
链接
s

代码将生成一个关联数组,其中键=
和值=
s
由字符串(9)分隔:
[“VA”]=>string(9)“| s | M | L | XL”

(2) 将
$c
写入表格(数据库表格?HTML表格?由您决定…):

foreach($c作为$name=>$size){
$size=分解(“|”,修剪($size,“|”);
$max=计数($size);
//输入表格的代码。。。
//echo用于演示:
echo“-$name:------
”; 对于($i=0;$i<$max;$i++)回显“大小$i:{$size[$i]}
”; }
见现场演示:

如果您自己制作XML,请以不同的方式制作它,比如

<item id="1">
    <name>VA</name>
    <size>S</size>
    <size>M</size>
    <size>L</size>
    <size>XL</size>
</item>

弗吉尼亚州
s
M
L
特大号

就像阅读xml一样:嗨,马克,谢谢……但我现在知道如何解析它,只是为了从xml中检索数据……但我不知道如何将大小的值放入表中。嗨,米奇,非常感谢……你很好!我不明白我的代码sql在您的公式中放在哪里……假设我的表名是“friend”,我只想插入大小和id的值。ThanksI尝试在您为任何表编写“//输入代码”的地方使用该代码……$sql=“insert INTO table2 VALUES(“$name”、“$size[0]”、“$size[1]”、“$size[2]”、“$size[3]”)$rssql=mysql\u查询($sql);但它不起作用…我错在哪里?@user2120473:mysql_973;函数已被弃用,请使用mysqli_973;或PDO,请参阅php.net了解基本信息。试一试,然后,如果你需要帮助,打开一个新的问题!祝你好运,玩得开心!您好,非常感谢您的工作,…工作正常…这是一个愚蠢的错误…我想知道结果中的对象ID是否可能同时使用名称…例如ID=1 name=VA size=X | M |等…@user2120473:试试看,如果您需要帮助,请打开一个新问题并显示您想要的/您尝试了什么!祝你好运
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 />";

} 
<item id="1">
    <name>VA</name>
    <size>S</size>
    <size>M</size>
    <size>L</size>
    <size>XL</size>
</item>