2012-01-30 4 views
0

У меня возникли проблемы с доступом к дочерним узлам моего содержимого SimpleXML. Я пробовал несколько вариантов, таких как $xmlData->id или $xmlData['id'].Доступ к содержимому дочерних узлов из SimpleXML

Я немного новичок в этой области, поэтому любая помощь будет принята с благодарностью.

Пример кода:

$xmlData = simplexml_load_string($string); 
    $person = $xmlData->documentElement; 
    $id = $xmlData->id; 

Var свалка $xmlData из простого XML:

object(SimpleXMLElement)#23 (10) { 
    ["id"]=> string(10) "yTZn1JIaaa" 
    ["first-name"]=> string(6) "First Name" 
    ["last-name"]=> string(6) "Last Name"... 
+1

Какое сообщение об ошибке? И о каких дочерних узлах вы спрашиваете? – hakre

+0

Хм, кажется '-> id' должен работать ... Каков ваш ввод XML? – Wrikken

+0

Возможный дубликат [отображение данных из XML с использованием php simplexml] (http://stackoverflow.com/questions/5833788/display-data-from-xml-using-php-simplexml) – Gordon

ответ

1

Я попытался восстановить свой фрагмент кода:

<?php 
$string = "<person><id>1</id><firstname>Foo</firstname><lastname>Bar</lastname></person>"; 
$xmlData = simplexml_load_string($string); 
echo $xmlData->id . " - " . $xmlData->firstname . " - " . $xmlData->lastname; 
?> 

Это работало отлично для меня - Выход был:

1 - Foo - Bar 

Вы можете видеть, что мои имена и фамилия тэгов отличаются от ваших - черта иногда вызывает проблемы. Если вам нужен тир, сделать это таким образом, вместо этого:

echo $xmlData->id . " - " . $xmlData->{'first-name'} . " - " . $xmlData->{'last-name'}; 

В любом случае, id работало нормально ... так что, может быть, у вас есть другая ошибка, которая предотвращает ваши скрипты от работает должным образом? Возможно, было бы полезно, если бы вы могли опубликовать свой XML-String.

Cheers, Max

P.S .: Почему ты выполнения этой строки?

$person = $xmlData->documentElement; 
+0

Большое спасибо! Да, тире было проблематично. Метод {'a'} имеет смысл метода. Все работает сейчас. У меня первоначально не было строки $ person = в коде, но, посмотрев на несколько примеров, попробовал это. Конечно, не помогло. – jsuissa

+0

@jsuissa технически, этот ответ такой же, как и код, который вы требуете, не работает. не могли бы вы указать, какая именно проблема заключалась в том, что теперь она работает сейчас внезапно? – Gordon

+0

Уверен - кажется, что без окружающих скобок просто с именем $ xmlData-> first-name не удался, но с {'first-name'} вроде бы это сработало. Я не уверен, почему я сам. Хотите узнать, может ли это быть связано с использованием Codeigniter? – jsuissa

Смежные вопросы