SimpleXML сохраняет содержимое тега как переменную - PullRequest
0 голосов
/ 28 июня 2011

ОК. До сих пор я работал с атрибутами тегов, но что, если я хочу сохранить фактическое содержимое тега как переменную, как мне это сделать?

Например, в приведенном ниже примере, как мне сохранить 'John' в переменной?

<person>
    <name>John</name>
</person>

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Используя PHP, вы можете сделать это следующим образом: -

<?php
$xmlstr = <<<XML
<person>
    <name>John</name>
</person>
XML;

$xml = new SimpleXMLElement($xmlstr);
$name_person = $xml->name;

// If you are unsure about the node string, then it's best to write it as:-
$name_person = $xml->{'name'};
/**
 * This above statement will take care if the node string contain characters not permitted under PHP's naming convention (e.g. the hyphen) can be accomplished by encapsulating the element name within braces and the apostrophe.
 */
?>

Более подробная информация доступна здесь .

Надеюсь, это поможет.

1 голос
/ 28 июня 2011

Вы говорите о SimpleXML в PHP?

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" ?><person><name>John</name></person>'); 
$john = $xml->name ;
echo $john ;

Причина, по которой мы используем $xml->name в нашем примере, а не $xml->person->name, заключается в том, что SimpleXML примет корневой элемент (стоит иметь в виду:).В реальном примере XML будет иметь другой корневой элемент, возможно, с несколькими элементами <person>, которые вы затем можете получить с помощью записи массива, например:

$james = $xml->person[4]->name ;

Более мощный способ - использовать Xpath , который стоит изучить, чтобы лучше разобраться со сложным XML;

$ john = $ xml-> xpath ('person / name');

...