Получение фактического значения из узла PHP SimpleXML - PullRequest
35 голосов
/ 16 июля 2009
$value = $simpleXmlDoc->SomeNode->InnerNode;

фактически присваивает объекту simplexml значение $ вместо действительного значения InnerNode.

Если я это сделаю:

$value = $simpleXmlDoc->SomeNode->InnerNode . "\n";

Я получаю значение. В любом случае, получить реальное значение без неуклюжего вида . "\n"?

Ответы [ 4 ]

80 голосов
/ 16 июля 2009

Примените к какому типу вы хотите (и имеет смысл ...). Конкатенируя, вы неявно преобразуете в строку, поэтому

$value = (string) $xml->someNode->innerNode;
19 голосов
/ 11 декабря 2010

Вам не нужно указывать innerNode.

$value = (string) $simpleXmlDoc->SomeNode;

4 голосов
/ 16 июля 2009

Как насчет использования Typecast, как-то так:

$value = (string)$simpleXmlDoc->SomeNode->InnerNode;

См .: Жонглирование

Или, возможно, вы можете использовать strval (), intval () и все такое - просто, вероятно, медленнее из-за вызова функции.

3 голосов
/ 16 июля 2009

Либо приведите его к строке, либо используйте его в контексте строки:

$value = (string) $simpleXmlDoc->SomeNode->InnerNode;
// OR
echo $simpleXmlDoc->SomeNode->InnerNode;

См. Справочное руководство по SimpleXML

...