如何将XML文件导入MariaDB数据库?

时间:2013-09-30 07:30:39

标签: php mysql xml

我有问题。我的PHP脚本不起作用,我不知道为什么。这是XML文件:

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 个答案:

答案 0 :(得分: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属性值添加到数组中。你现在可以用这些信息做任何你喜欢的事情,这只是为了让你开始。