我有问题。我的PHP脚本不起作用,我不知道为什么。这是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">
请帮帮我。谢谢。
答案 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
属性值添加到数组中。你现在可以用这些信息做任何你喜欢的事情,这只是为了让你开始。