从SimpleXMLElement对象获取价值

时间:2011-08-15 20:01:25

标签: php xml parsing simplexml

您好我有以下XML段:

......
            <Result number="4" position="1" points="25">
                <Driver driverId="button" url="http://en.wikipedia.org/wiki/Jenson_Button">
                    <GivenName>Jenson</GivenName>
                    <FamilyName>Button</FamilyName>
                    <DateOfBirth>1980-01-19</DateOfBirth>
                    <Nationality>British</Nationality>
                </Driver>
......

我可以轻松地使用以下内容来获取GivenName:

$item->Driver->GivenName;

但是当我使用时:

$item->Driver->FamilyName;

我得到了SimpleXMLElement Object()

我环顾四周,发现将它传递给字符串可能会有所作为然后我在屏幕上什么都没得到。甚至不是SimpleXMLElement对象。

我不明白,因为它是GivenName的兄弟,而且有效。

2 个答案:

答案 0 :(得分:7)

在这两种情况下都会得到一个SimpleXMLElement对象,如果你使用print_r(),你会看到它:

print_r ($item->Driver->GivenName);
print_r ($item->Driver->FamilyName);

输出:

SimpleXMLElement Object
(
    [0] => Jenson
)
SimpleXMLElement Object
(
    [0] => Button
)

您可以使用显式强制转换将值作为字符串获取:

$givenNameString = (string) $item->Driver->GivenName;
$familyNameString = (string) $item->Driver->FamilyName;

答案 1 :(得分:1)

为了让PHP明白你必须在对象上强制进行类型转换,如下所示:

$givenName = (array) $item->Driver->GivenName; 
$familyName = (array) $item->Driver->FamilyName;

print_r($givenName);
print_r($familyName);

输出:

Array ([0] => 'Jenson')
Array ([0] => 'Button')