Как получить имя узла от неизвестного узла через SimpleXML
Например, у меня есть 2 типа узлов в моем XML-файле:
1) <book>
2) <author>
Переменная с именем $node указывает на конкретный узел (неизвестного типа). Как я могу получить доступ к имени этого узла? Это должно быть что-то вроде этого:
if($node->name()=="book")
process_book($node);
else
process_author;
2 ответа
Решение
SimpleXMLElement
имеет getName()
метод:
echo $node->getName();
Предположение: $node
является объектом SimpleXMLElement
Я могу что-то упустить, но вот простое решение. + Изменить simplexml_load_string
в simplexml_load_file
если вы используете файл.
$xml_string = <<<XML
<root>
<item>
<book>Book 1</book>
<author>Author 1</author>
</item>
<item>
<book>Book 2</book>
<author>Author 2</author>
</item>
<item>
<book>Book 3</book>
<author>Author 3</author>
</item>
</root>
XML;
$xml = simplexml_load_string($xml_string);
foreach($xml->item as $node){
if(isset($node->book)){
process_book($node);
}
}