DiegoDD
DiegoDD

Reputation: 1665

How to get name of very first tag of XML with php's SimpleXML?

I am parsing XML strings using simplexml_load_string(), but I noticed that i don't get the name of the very first tag.

For example, I have these two xml strings:

$s = '<?xml version="1.0" encoding="UTF-8"?>
<ParentTypeABC>
    <chidren1>
        <children2>1000</children2>
    </chidren1>
</ParentTypeABC>
';

$t = '<?xml version="1.0" encoding="UTF-8"?>
<ParentTypeDEF>
    <chidren1>
        <children2>1000</children2>
    </chidren1>
</ParentTypeDEF>
';

NOTICE that they are nearly identical, the only difference being that one has the first node as <ParentTypeABC> and the other as <ParentTypeDEF>

then I just convert them to SimpleXML objects:

$o = simplexml_load_string($s);
$p = simplexml_load_string($t);

but then i have two equal objects, none of them having the "top" node's name appearing, either ParentTypeABC or ParentTypeDEF (I examine the objects using print_r()):

// with top node "ParentTypeABC"
SimpleXMLElement Object
(
    [chidren1] => SimpleXMLElement Object
        (
            [children2] => 1000
        )

)
// with top node "ParentTypeDEF"
SimpleXMLElement Object
(
    [chidren1] => SimpleXMLElement Object
        (
            [children2] => 1000
        )

)

So how I am supposed to know the top node's name? If I parse unknown XMLs and I need to know what's the top node name, what can I do?

Is there an option in simplexml_load_string() I could use?

I know there are MANY ways to parse XML's with PHP, but I'd like it to be as simple as posible, and to get a simple object or array I could navigate easily.

I made a simple example here to fiddle with.

Upvotes: 3

Views: 1986

Answers (1)

ToBe
ToBe

Reputation: 2681

SimpleXML has a getName() method.

echo $xml->getName();

This should return the name of the respective node, no matter if root or not.

http://php.net/manual/en/simplexmlelement.getname.php

Upvotes: 4

Related Questions