Как получить имя узла от неизвестного узла через 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);
    }
}
Другие вопросы по тегам