PHP xpath 无法找到子节点,但找到父节点


PHP xpath not able to find child node but finds parent

我能够加载XML文档并创建一个SimpleXMLElement - 我也可以使用XPATH查询它,但我对我注意到的行为感到困惑。当我加载XML并创建一个SimpleXMLElement时 - 它的结构如下

XML如下

 <StructuredXMLResume>
        <ContactInfo>
            <PersonName>
                <FullName>Tom Jones</FullName>
                <GivenName>Tom</GivenName>
                <MiddleName />
                <FamilyName>Jones</FamilyName>
            </PersonName>
       </ContactInfo>
 </StructuredXMLResume>

[0] => SimpleXMLElement Object
        (
            [PersonName] => SimpleXMLElement Object
                (
                    [FullName] => Tom Jones
                    [GivenName] => Tom
                    [MiddleName] => SimpleXMLElement Object
                        (
                        )
                    [FamilyName] => Jones
                )

当我执行$xml->xpath('//PersonName')时,我得到正确的结果,如下所示

[0] => SimpleXMLElement Object
        (
            [FullName] => Tom Jones
            [GivenName] => Tom
            [MiddleName] => SimpleXMLElement Object
                (
                )
            [FamilyName] => Jones
        )

但是当我执行$xml->xpath('//GivenName')时,我得到以下结果 - 我无法理解

[0] => SimpleXMLElement Object
        (
        )

有人可以帮我了解我的错误是什么吗?

在我看来

,它正在按预期工作。 SimpleXMLElement::xpath 返回一个包含 SimpleXMLElement 的数组,并且您得到一个包含SimpleXMLElement的数组。

你试过这个吗:

$nodes = $xml->xpath('//GivenName');
echo $nodes[0];  // should output:  Tom
// or if that doesn't work, try:
echo (string)$nodes[0];