В настоящее время я пытаюсь создать общий PHP-класс, позволяющий извлекать XML-данные. Все данные поступают в одинаковом формате, но будут иметь разные имена элементов, а иногда может быть больше элементов. Пример XML:Получение содержимого элемента XML без знания имени элемента PHP
Один канал может показать это:
<GroupData>
<Table diff:id="1">
<Code>1</Code>
<Name>Red</Name>
<Type>X</Type>
</Table>
<Table diff:id="2">
<Code>2</Code>
<Name>Yellow</Name>
<Type>Y</Type>
</Table>
</GroupData>
Другой канал может показать:
<GroupData>
<Table diff:id="1">
<Code>1</Code>
<Name>Red</Name>
</Table>
<Table diff:id="2">
<Code>2</Code>
<Name>Yellow</Name>
</Table>
</GroupData>
Мой PHP выглядит следующим образом:
$dom = DOMDocument::loadXML($xml);
$node_list = $dom->getElementsByTagName('Table');
for($i=0; $i < $node_list->length; $i++) {
echo $node_list->item($i)->nodeValue;
}
Это возвращает данные, но это не совсем то, что я ищу. Я бы хотел, чтобы он разбился, чтобы я мог видеть имя элемента и значение элемента, а затем создать массив из данных для будущего использования. Есть ли способ сделать это без использования «getElementsByTagName», что я использовал раньше, чтобы получить XML? Я знаю, что каждая подача, которую я получаю, будет иметь таблицу, поэтому я могу ее прокручивать каждый раз. Спасибо за помощь.
попробовать http://php.net/manual/en/domxpath.query.php и использовать селектор вправо –