Как я могу ссылаться на элементы с именами, такими как 'element-name', используя SimpleXml - PullRequest
0 голосов
/ 13 октября 2009

Как я могу разобрать документ XML следующим образом:

<feed>
  <item>
    <element-name>Element value</element-name>
  </item>
</feed>

Если я попробую следующее, это не сработает:

$xmlObject = simplexml_load_string($xmlString);

foreach($xmlObject->item as $item) {
    $elementName= $item->element-name; // Obviously doesn't work.
}

Я пробовал:

$item->element_name;
$item->elementname;
$item->elementName;

Нет работы. Как мне получить доступ к значению этого элемента?

Ответы [ 2 ]

1 голос
/ 13 октября 2009

Вы можете использовать что-то вроде этого:

$name = "element-name";
$item->{$name};
0 голосов
/ 13 октября 2009

simplexml_load_string не нравится, когда вы пытаетесь передать узлам элемента тире / дефис (-).

У вас есть два варианта здесь.

Заключить имя элемента в фигурные скобки ({}):

$elementName = $item->{'element-name'};

Или превратить его в переменную, которую можно заменить:

$elementNameNode = 'element-name';
$elementName = $item->$elementNameNode;
...