2011-08-15 32 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')