-4

为了编写我的 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 文件都在这里

我需要获取它所属的产品名称(Каталог->Товары->Товар->Наименование),父类别的名称(Классификатор->Группы->Группа->Наименование)以及子类别的名称类别(Классификатор->Группы->Группа->Группы->Группа->Наименование ),即事实证明:

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

怎么做?

4

1 回答 1

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";
}
于 2012-11-18T10:08:46.073 回答