正在处理 xml 个文件

Processing xml file

我有以下 xml 文件:


    行类别="1" category_name="CatA" entry_id="1" entry_name="A1"
    行类别="1" category_name="CatA" entry_id="2" entry_name="A2"
    行类别="1" category_name="CatA" entry_id="3" entry_name="A3"
    行类别="2" category_name="CatB" entry_id="4" entry_name="B1"
    行类别="2" category_name="CatB" entry_id="5" entry_name="B2"
    行类别="2" category_name="CatB" entry_id="6" entry_name="B3"
    行类别="3" category_name="CatC" entry_id="7" entry_name="C1"
    行类别="4" category_name="CatD" entry_id="8" entry_name="D1"

我想生成以下 html:

CatA
----A1
----A2
----A3
CatB
----B1
----B2
----B3
CatC
----C1
CatD
----D1

为此,我使用下面的 php xml 解析器:


$ndeshjet=simplexml_load_file("xml_file.xml");

$new_category = 1;

foreach ($ndeshjet->row as $entry) {

      $category = $entry['category'];
        if ($category  <> $new_category){
             $category_name = $entry['category_name'];
             echo $category_name."</br>";   
             $new_category = $category;
        } else {
             $entry_name  = $entry['entry_name'];
             echo "----".$entry_name."</br>";       
        }
}

?></p> <p>但结果是:</p> ----A1 - - A2 ----A3 CatB CatB CatB 分类目录 分类目录

提前致谢

作为替代方案,您可以首先将所有值收集在一个数组中,然后将 category name 作为键将相同的键推送到数组中。完成并收集后,相应地打印它们:

$categories = array();
// gather inside container
foreach ($ndeshjet->row as $entry) {
    $category_name = (string) $entry->attributes()->category_name;
    $entry_name = (string) $entry->attributes()->entry_name;
    $categories[$category_name][] = $entry_name;
}

// presentation
foreach($categories as $category_name => $entries) {
    echo $category_name . '<br/>';
    foreach($entries as $entry) {
        echo '----' . $entry . '<br/>';
    }
}

Sample Output