如何让这个 php foreach 解析所有 <mod> 条目?

How do I get this php foreach to parse through all of the <mod> entries?

我需要解析所有“”标签条目中的 "name" 和 "version" 属性。

感谢 this page 我只能解析 xml.

中的第一个“”标签

我不是程序员,所以我不知道如何继续下去。

这是我的xml file

这些是我的测试 php 文件。

$xmlfile = simplexml_load_file("packa.xml");
foreach ($xmlfile->children() as $mods) {
    echo $mods->mod['name']."</br>";
    echo $mods->mod['version'];
}

有这个输出。

</br></br>Just Enough Items</br>4.15.0.293

foreach ($xmlfile->children() as $mods) {
    echo $mods->mod['name']."
    </br>".$mods->mod['version'];
}

有这个输出

</br>
</br>Just Enough Items
</br>4.15.0.293

您可以使用 xpath 沿这些思路进行尝试:

$result = $xmlfile->xpath('//mods//mod');  
foreach($result as $mod){
    $nam = $mod->xpath('.//@name');
    $ver = $mod->xpath('.//@version');
    echo implode ( $nam). "</br>" .implode( $ver );  
    echo "<br>";   
}

输出:

Just Enough Items
4.15.0.293
MTLib
3.0.6
CraftTweaker2
1.12-4.1.20
Mod Tweaker
4.0.18

等等

您在 foreach() 循环中的 XML 中使用了错误的级别,这只是在 <mods> 元素上循环 - 只有 1 个元素。您需要指定您想要遍历 <mod> 元素,然后像您已经做的那样访问属性...

foreach ($xmlfile->mods->mod as $mod) {
    echo $mod['name'] . "/" . $mod['version'] . "</br>" . PHP_EOL;
}