如何通过SimpleXML从未知节点获取节点名称

时间:2012-11-16 16:57:23

标签: php simplexml nodename

例如,我的xml文件中有两种类型的节点:

    1) <book>
    2) <author>

名为$ node的变量指向特定节点(未知类型)。 如何访问此节点的名称?必须是这样的:

    if($node->name()=="book")
    process_book($node);
    else
    process_author;

2 个答案:

答案 0 :(得分:0)

SimpleXMLElementgetName()方法:

echo $node->getName();

假设: $node是SimpleXMLElement对象。

答案 1 :(得分:0)

我可能会遗漏一些东西,但这是一个简单的解决方案。如果您使用文件,请将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);
    }
}