Получение значения из объекта SimpleXMLElement - PullRequest
3 голосов
/ 16 августа 2011

Привет, у меня есть следующий сегмент 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 ()

Я осмотрелся и обнаружил, что это может быть связано с передачей его в строку, но затем я ничего не получаю на экране.Даже не SimpleXMLElement Object.

Я не понимаю, так как это родственное имя GivenName, и это работает.

Ответы [ 2 ]

7 голосов
/ 16 августа 2011

В обоих случаях вы получаете объект 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 голос
/ 06 августа 2015

Чтобы понять PHP, вы должны принудительно привести типирование к объекту, как показано ниже:

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

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

ВЫХОД:

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