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

时间:2014-11-13 16:51:13

标签: php xml xpath

我能够加载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
        (
        )

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

1 个答案:

答案 0 :(得分:1)

在我看来它正如预期的那样工作。 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];