2011-08-15 72 views
3

您好我有这个遵循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> 
...... 

我可以用轻松以下,以获得给定名称:

$item->Driver->GivenName; 

但是当我使用:

$item->Driver->FamilyName; 

我得到SimpleXMLElement对象()

我环顾四周,发现它可能与将它传递给一个字符串有关,但我在屏幕上什么都没有得到。甚至没有SimpleXMLElement对象。

我不明白,因为它是GivenName的兄弟姐妹,而且工作。

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

输出:

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

您可以使用显式转换,以获得

+0

当有嵌套元素(儿童)SimpleXMLObject的返回,或者如果XML标签是空的。 I.E: 你能发表任何代码吗? –

回答

6

您在这两种情况下,你会看到,如果你使用的print_r()得到一个SimpleXMLElement对象值作为字符串:

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

为了使PHP知道你必须强有力地类型化belbel流量:

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

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

OUTPUT:

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