Два одинаковых узла в xml

У меня есть следующий код:

<?php
$str = '<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<ITEM>
<TITLE>Title1</TITLE>
<CATEGORY>Books</CATEGORY>
<CATEGORY>Books | Novel</CATEGORY>
</ITEM>
<ITEM>
<TITLE>Title2</TITLE>
<CATEGORY>Books</CATEGORY>
<CATEGORY>Books | Sci-fi</CATEGORY>
</ITEM>
</ROOT>';

$xml = simplexml_load_string($str);

$s_xml = $xml->xpath("/ROOT/ITEM");
foreach($s_xml as $s_cat){
$cat_group = htmlspecialchars($s_cat->CATEGORY);
echo $cat_group."<BR />";
}
?>

Я не могу редактировать XML, поэтому мне нужно решить следующую проблему. Как сказать PHP, что мне нужно показать второй узел с именем CATEGORY, а не первый. В моем примере у меня есть выход

Books
Books

И мне нужно:

Books | Novel
Books | Sci-fi

Спасибо!

1

Решение

Это то, что вы ищете (обратите внимание на [1]):

 $cat_group = htmlspecialchars($s_cat->CATEGORY[1]);

Занимает второй элемент в массиве элементов категории

Вы всегда можете посмотреть на свои элементы так, чтобы понять, как выглядит структура:

print_r($s_cat->CATEGORY);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]