Как мне получить этот php foreach для анализа всех записей <mod>? - PullRequest
0 голосов
/ 25 апреля 2020

Мне нужно проанализировать атрибуты "name" и "version" из всех записей тега "".

Благодаря этой странице Мне удалось проанализировать только первый тег "" из xml.

Я не программист, поэтому понятия не имею, как включить go.

Это мой xml file .

Это мои тесты php files.

$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

And

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

имел этот вывод

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

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Вы можете попробовать что-то в этом духе, используя 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

et c.

0 голосов
/ 25 апреля 2020

Вы используете неправильный уровень в XML в foreach() l oop, это циклично только для элементов <mods> - и есть только 1. Вам нужно указать, что вы хотите l oop поверх <mod> элементов, а затем просто получите доступ к атрибутам, как вы уже делаете ...

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