如何获得正确的行XML?

时间:2012-11-18 09:40:50

标签: php xml import xml-parsing

为了编写我的XML,我使用以下代码:

$xml = simplexml_load_file('import.xml');
foreach($xml->Классификатор->Группы->Группа as $group)
echo $group->Наименование . '<br />' .
     $group->Ид . '<br />' .
     $group->Группы->Группа->Наименование . '<br />' .
     $group->Группы->Группа->Ид . '<br /><br />';
echo '<br /><br /><br /><br /><br /><br />';
foreach($xml->Каталог->Товары->Товар as $item)
echo $item->Наименование . '<br />' . $item->Ид . '<br /><br />';

所有XML文件均为here

我需要获取产品的名称(Каталог-&gt;Товары-&gt;Товар-&gt;Наименование),父类别的名称(Классификатор-&gt;Группы-&gt;Группа-&gt;Наименование)到它属于哪个子类别的名称(Классификатор-&gt;Группы-&gt;Группа-&gt;Группы-&gt;Группа-&gt;Наименование),即 结果证明:

товар (Каталог->Товары->Товар->Наименование)
его категория (Классификатор->Группы->Группа->Наименование)
его подкатегория (Классификатор->Группы->Группа->Группы->Группа->Наименование)

怎么做?

1 个答案:

答案 0 :(得分:0)

您需要收集包含组ID的哈希数组作为键和所有必需值。然后通过id查找组名和属性变得简单。这是一个有效的例子:

$xml = simplexml_load_file('/tmp/1.xml');
$groups = array();
foreach($xml->Классификатор->Группы->Группа as $group) {
  $groups[ (string) $group->Ид] = array(
    "name" => (string) $group->Наименование,
  );
  foreach($group->Группы->Группа as $subgroup) {
    $groups[ (string) $subgroup->Ид] = array(
      "name" => (string) $subgroup->Наименование,
      "parent" => (string) $group->Наименование
    );
  }
}
foreach($xml->Каталог->Товары->Товар as $item) {
  $group = $groups[ (string) $item->Группы->Ид];
  echo $item->Наименование ."\n". 
       (isset($group["parent"]) ? $group["parent"]."\n" : "").
       $group["name"]."\n\n";
}