#xml #parsing #simplexml
#xml #синтаксический анализ #simplexml
Вопрос:
я пытаюсь вывести XML-данные в таблицу html
как я могу получить все атрибуты TITLE, ARTIST в таблице с помощью цикла foreach без их записи вручную
<thead> <tr> <th>TITLE</th> <th>ARTIST</th> </tr> </thead>
с помощью этого кода я получаю XML-данные.
$xml = new SimpleXMLElement('http://www.w3schools.com/xml/cd_catalog.xml', 0, true);
foreach($xml->CD as $cd)
{
echo '<tr>';
echo '<td>'.$cd->TITLE.'</td>';
echo '<td>'.$cd->ARTIST.'</td>';
echo '</tr>';
}
Комментарии:
1. Ваш код выглядит неплохо, однако нам нужно знать xml, чтобы определить, правильно ли это, а если нет, то почему
2. в моем коде я получаю только атрибуты, но я также хочу автоматически получать имена тегов, такие как «title», «artist» для таблицы
3. как cd_catalog.xml похоже, там есть названия?
4. вы можете открыть w3schools.com/xml/cd_catalog.xml <КАТАЛОГ><CD><НАЗВАНИЕ>Империя Бурлеска</НАЗВАНИЕ><ИСПОЛНИТЕЛЬ> Боб Дилан </ИСПОЛНИТЕЛЬ><СТРАНА> США </СТРАНА><КОМПАНИЯ> Колумбия </КОМПАНИЯ><ЦЕНА> 10.90</ЦЕНА><ГОД> 1985 </ГОД></CD><CD><НАЗВАНИЕ> Спрячь свое сердце </TITLE><ИСПОЛНИТЕЛЬ> Бонни Тайлер </ИСПОЛНИТЕЛЬ> <СТРАНА> ВЕЛИКОБРИТАНИЯ </COUNTRY><КОМПАНИЯ> CBS Records </COMPANY> <ЦЕНА> 9.90</ЦЕНА><ГОД>1988 </ГОД></CD></CATALOG>
5. Скорее всего, вы имеете в виду не атрибуты, а элементы. Пожалуйста, проверьте формальную номенклатуру XML, иначе ваш вопрос может показаться немного странным.
Ответ №1:
Если я вас правильно понимаю, вы хотите динамически записывать заголовок и содержимое, для этого вам нужен определенный корневой узел (для вашего примера это будет CD)
$xml = новый элемент SimpleXMLElement(‘http://www.w3schools.com/xml/cd_catalog.xml ‘, 0, истина);
echo '<table>';
echo '<thead>';
echo ' <tr>';
foreach ($xml->CD[0]->children() as $child)
{
echo '<th>'.$child->getName().'</th>';
}
echo ' </tr>';
echo '</thead>';
foreach($xml->CD as $cd) {
echo '<tr>';
foreach ($cd->children() as $child) {
echo '<td>'.$child.'</td>';
}
echo '</tr>';
}
echo '</table>';
Что-то вроде этого