PHP - синтаксический анализ объекта XML, созданного при помощи simplexml_load_string () - PullRequest
2 голосов
/ 23 сентября 2010

Я пытаюсь прочитать значение атрибута корневого узла XML, передаваемого в метод simplexml_load_string () в PHP.

Вот пример,

<data status="Active">
 <user> <userid> 1 </userid> </user>
 <user> <userid> 2 </userid> </user>
<data>

Я пытаюсь прочитать значение 'status' в приведенной выше строке XML:

echo $xml->user[0]->userid;
echo $xml->attributes()->status

Операторы don 'тоже не работает, var_dump() выводит "NULL".

Ответы [ 5 ]

4 голосов
/ 23 сентября 2010

echo (string)$userNode->attributes()->status должно работать

2 голосов
/ 23 сентября 2010

Помимо метода attribute () вы можете просто получить доступ к атрибутам элемента, обрабатывая объект элемента как массив (SimpleXMLElement реализует ArrayAccess )

$xml = simplexml_load_string('<user status="Active"></user>');
echo 'status=', $xml['status'];

Но для доступа к атрибутам в других пространствах имен вы должны использовать атрибуты () (afaik).

0 голосов
/ 20 апреля 2012

Извините, но в вашем примере XML вы не закрыли свой конечный тег <data>.

0 голосов
/ 23 сентября 2010

Спасибо за ответы ... Разбор не был действительно проблемой.

Я пропустил следующие параметры cURL,

curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");

Я рассматривал логическое значение (ответ cURL) как файл XML :)

Спасибо всем ...

0 голосов
/ 23 сентября 2010
$xml = simplexml_load_string('<user status="Active"></user>');

echo $xml->attributes()->status;
...