XPath und PHP: nichts funktioniert richtig

Hier ist mein Code:

$XML = <<<XML
<items>
    <item id="123">
        <name>Item 1</name>
    </item>
    <item id="456">
        <name>Item 2</name>
    </item>
    <item id="789">
        <name>Item 3</name>
    </item>
</items>
XML;


$objSimpleXML = new SimpleXMLElement($XML);

print_r($objSimpleXML->xpath('./item[1]'));
print "- - - - - - -\n";
print_r($objSimpleXML->xpath('./item[2][@id]'));
print "- - - - - - -\n";
print_r($objSimpleXML->xpath('./item[1]/name'));

Nichts besonderes: Ich versuche, Daten über zu extrahierenXPath. Der Pfad muss ein String sein, um ein dynamisches Programm zu entwerfen, das seine Daten von a lädtXML Konfigurationsdatei.

Bei Verwendung von PHP wird gerne auf Objekt zugegriffen$objSimpleXML->items->item[0]['id'] alles funktioniert gut AberXPath Ansatz funktioniert nicht wirklich. Der obige Code generiert die folgende Ausgabe:

Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [id] => 123
                )

            [name] => Item 1
        )

)
- - - - - - -
Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [id] => 456
                )

            [name] => Item 2
        )

)
- - - - - - -
Array
(
    [0] => SimpleXMLElement Object
        (
        )

)

Ich stimme der ersten Ausgabe zu. In der zweiten Ausgabe wird jedoch anstelle des Attributs das gesamte Element zurückgegeben. Warum? Und die letzte Auflistung ist leer statt Namensinhalt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage