2013-04-09 26 views
0

我喜歡它指的是同一個產品的所有ID,但在TAG的值不同,這解析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> 

標籤組的XML標籤尺寸。

我想獲得這樣的

id name size1 size2 size3 size4 
    1 va s  m  l  xl 

SQL表我如何解析這個XML與PHP來獲得我想要的表?

+0

與任何與讀取XML:http://php.net/dom – 2013-04-09 16:26:19

+0

嗨馬克感謝......但我現在該怎麼解析它只是爲了從XML檢索數據...但我不知道如何把大小的值放在表中 – user2120473 2013-04-09 16:42:03

回答

0

假設你得到的XML和不能改變它:

(1)讀取XML,構建陣列$c,假設<NAME>也是連結<SIZE>s
的代碼將生成與關鍵= <NAME>和值的關聯數組= <SIZE>s通過分隔|:一個表(數據庫表?HTML表["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你決定。 ..):

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

罪情況下,你MAKE XML自己,使其不同,就像...

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

嗨michi非常感謝...你真是太棒了!我不明白在哪裏把我的代碼SQL在你的公式....假設我的表名是「朋友」,我想只插入大小和ID的值。謝謝 – user2120473 2013-04-09 18:06:14

+0

我試着用代碼在你寫的「//輸入任何表的代碼...」 $ sql =「INSERT INTO table2 VALUES('$ name','$ size [0]','$ size [ 1]」, '$尺寸[2]', '$大小[3]')「; $ rssql = mysql_query($ sql); 但它不起作用......我錯了嗎? – user2120473 2013-04-09 19:56:18

+0

@ user2120473:不建議使用mysql_-functions,請使用mysqli_或PDO,請參閱php.net瞭解基礎知識。試試吧,那麼,如果你需要幫助,就打開一個新的問題!祝好運並玩得開心點! – michi 2013-04-09 21:23:14