Это мой XML-структура:Отобразить все узлы в XML
<?xml version="1.0"?>
<Module_Files>
<Category name="test1">
<file lang="fr">
<title>Menu</title>
<description>Menu list</description>
<path>menu.pdf</path>
</file>
</Category>
<Category name="test2">
<file lang="fr">
<title>Spa</title>
<description>Services offered in our Spa</description>
<path>spa.pdf</path>
</file>
<file lang="en">
<title>Gym</title>
<description>rate</description>
<path>gym.pdf</path>
</file>
</Category>
</Module_Files>
Я хочу, чтобы для каждой категории <Category>
все файлы <file>
. но мне удалось получить только первый файл. Я хочу, чтобы отобразить, как это (я беру test2 Категорию для примера):
названия: Сп, описание: Услуги, предлагаемые в нашем Spa, пути: spa.pdf
названия: Центр, описание: скорость , путь: gym.pdf
Это мой код:
$categoryConfig = $xmlFile->xpath("//Category[@name='" . $categorySelected . "']/config");
foreach ($categoryConfig as $key => $value)
{
$rightPanel .= $key . ":" . $value;
}
И это то, что я получаю с этим кодом:
0: 1:
var_dump($categoryConfig)
=
array(2) {
[0]=> object(SimpleXMLElement)#26 (4)
{ ["@attributes"]=> array(1) { ["lang"]=> string(2) "fr" }
["title"]=> string(3) "Spa" ["description"]=> string(35) "Services offered in our Spa" ["path"]=> string(7) "spa.pdf" }
[1]=> object(SimpleXMLElement)#27 (4)
{ ["@attributes"]=> array(1) { ["lang"]=> string(2) "en" }
["title"]=> string(14) "Gym" ["description"]=> string(29) "Rate" ["path"]=> string(18) "gym.pdf" }
}
Вы выбираете 'config' дочерний элемент' category' с конкретным 'name' атрибута. Он не соответствует XML в вашем примере (без элементов 'config'). Для вывода каждого 'файла' в каждой' категории' вам понадобится две петли, а не одна. Внешний для категорий и внутренний для файлов каждой категории. Если вы хотите вывести файл, независимый от категорий, которые вы могли бы выбрать, и переименовать их напрямую. – ThW