我能够加载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
(
)
有人可以帮我理解我的错误是什么吗?
答案 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];