2013-09-30 51 views
0

我有一個問題。我的PHP腳本不工作,我不知道爲什麼。這是XML文件:如何將XML文件導入MariaDB數據庫?

http://itoffice.sk/toto.xml

這是我讀XML的PHP​​代碼:

$xml = simplexml_load_file("toto.xml") or die("feed sa nepodarilo načítať"); 
$id = $xml->Zbozi['kod_zbozi']; 
echo $id; 

這不工作。我需要表現出和寫入到MySQL < Zbozi的所有屬性>

<Zbozi>例如:

<Zbozi diffgr:id="Zbozi1" msdata:rowOrder="0" kod_zbozi="DL139A" popis="HP DMS-59 to Dual DVI Cable Kit,accessory" part_number="DL139A" zaruka="24" dostupnost="false" dph="20" cena="29.23" cenaEU="35.34" snimek="DL139A/06_s.jpg" kod_vyrobce="093-001453" kod_kategorie="PC STOLNÍ POČÍTAČE" kategorie="Stolné počítače" kod_podkategorie="PŘÍSLUŠENSTVÍ ZN PC" podkategorie="Príslušenstvo značkových PC" typ="0" aut_poplatek="0.000" rema="0.000" sam_neprodejne="0" sn_vydej="false" ean="808736662901" doprodej="false"> 

請幫助我。謝謝。

回答

1

你的腳本不工作的原因是因爲你沒有正確地遵循XML樹。正如你所看到的,你的XML的結構是這樣的:

<diffgr:diffgram> 
    <Cenik> 
     <Zbozi></Zbozi> 
     ... 
     <Zbozi></Zbozi> 
    </Cenik> 
</diffgr:diffgram> 

因此,你必須遵循的樹,然後爲Zbozi元素循環,以獲得他們的所有屬性。

這個代碼看看:

$xml = simplexml_load_file('http://itoffice.sk/toto.xml'); 
$zbozi = $xml->children('diffgr', TRUE)->diffgram->children()->Cenik->Zbozi; 

$id_arr = array(); 

foreach ($zbozi as $zbozi_element) 
{ 
    $id_arr[] = (string) $zbozi_element['kod_zbozi']; 
} 

首先,我們加載XML文件,沒有什麼新東西。但在第二行中,我們正在遍歷XML文件。首先我們將前綴命名空間設置爲diffgr(因爲diffgr:diffgram中的分號),那麼我們只需找到Zbozi元素,然後循環使用它們。

您可以看到,在循環中,我已將所有kod_zbozi屬性值添加到數組中。在這一點上,你真的可以做任何你想要的信息,這只是爲了讓你開始。

+0

哥哥,請問這是什麼? '致命錯誤:調用一個非對象'的成員函數children() –