Php 处理xml文件
我有以下xml文件: row category="1" category_name="CatA" entry_id="1" entry_name="A1" row category="1" category_name="CatA" entry_id="2" entry_name="A2" row category="1" category_name="CatA" entry_id="3" entry_name="A3" row category="2" category_name="CatB" entry_id="4" entry_name="B1" row category="2" category_name="CatB" entry_id="5" entry_name="B2" row category="2" category_name="CatB" entry_id="6" entry_name="B3" row category="3" category_name="CatC" entry_id="7" entry_name="C1" row category="4" category_name="CatD" entry_id="8" entry_name="D1" 为此,我使用以下php xml解析器:Php 处理xml文件,php,xml,simplexml,Php,Xml,Simplexml,我有以下xml文件: row category="1" category_name="CatA" entry_id="1" entry_name="A1" row category="1" category_name="CatA" entry_id="2" entry_name="A2" row category="1" category_name="CatA" entry_id="3" entry_name="A3" row category="2" catego
$ndeshjet=simplexml\u load\u文件(“xml\u file.xml”);
$new_类别=1;
foreach($ndeshjet->行作为$entry){
$category=$entry['category'];
如果($category$new\u category){
$category_name=$entry['category_name'];
echo$category_name.“”;
$new_category=$category;
}否则{
$entry_name=$entry['entry_name'];
echo“---.$entry\u name.”“;
}
}
?>
但结果是:
----A1
----A2
----A3
有线电视
有线电视
有线电视
CatC
CatD
提前感谢作为替代方案,您可以首先在数组中收集所有值,并将
类别名称
作为键,将相同的键推到数组中。完成并收集后,相应地打印:
$categories=array();
//聚集在容器内
foreach($ndeshjet->行作为$entry){
$category\u name=(字符串)$entry->attributes()->category\u name;
$entry\u name=(字符串)$entry->attributes()->entry\u name;
$categories[$categories\u name][]=$entry\u name;
}
//介绍
foreach($category作为$category\u name=>$entries的类别){
echo$category_name.“
”;
foreach($entries作为$entry){
回显'-'.$entry.'
;
}
}
@ArtanTelkiu当然,我很高兴这有帮助
CatA
----A1
----A2
----A3
CatB
----B1
----B2
----B3
CatC
----C1
CatD
----D1
$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>"; } }
$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/>'; } }