Как я могу ссылаться на элементы с именами, такими как 'element-name', используя SimpleXml

Как я могу разобрать документ 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;

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

13.10.2009 02:35:29
2 ОТВЕТА
РЕШЕНИЕ

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

$name = "element-name";
$item->{$name};
1
13.10.2009 02:41:55

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

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

Инкапсулируйте имя элемента с помощью фигурных скобок ( {}):

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

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

$elementNameNode = 'element-name';
$elementName = $item->$elementNameNode;
0
13.10.2009 03:05:13