#php #xml #parsing
#php #xml #синтаксический анализ
Вопрос:
Это мой xml
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Main Title</title>
<link>https://mainlink.com</link>
<description>Main Description</description>
<language>en</language>
<copyright>https://copyright.com</copyright>
<ttl>5</ttl>
<item>
<title>Title One</title>
<description>Description One</description>
<pubDate>Mon, 07 Dec 2020 00:00:00 1100</pubDate>
<link>https://linkone.com</link>
</item>
<item>
<title>Title Two</title>
<description>Description Two</description>
<pubDate>Fri, 04 Dec 2020 00:00:00 1100</pubDate>
<link>https://linktwo.com</link>
</item>
</channel>
</rss>
Это мой PHP
<?php
if(!$xml=simplexml_load_file('test.xml')){
trigger_error('Error reading XML file',E_USER_ERROR);
}
foreach ($xml as $syn) {
$t = $syn->item->title;
$d = $syn->item->description;
$p = $syn->item->pubDate;
$l = $syn->item->link;
echo $t.'<br>';
echo $d.'<br>';
echo $p.'<br>';
echo $l.'<br>';
}
?>
Это то, что отображается при запуске php
Заголовок Один Описание Один Пн, 07 Дек 2020 00:00:00 1100 https://linkone.com
Мне нужно повторить каждый элемент, чтобы я получил:
Заголовок Один Описание Один Пн, 07 Дек 2020 00:00:00 1100 https://linkone.com
Заголовок два Описание Два Пн, 07 Дек 2020 00:00:00 1100 https://linktwo.com
Любые предложения будут оценены, я искал и безуспешно пытался.
Заранее спасибо.
Ответ №1:
В соответствии с вашей структурой xml, правильный цикл:
foreach ($xml->channel->item as $syn) {
$t = $syn->title;
$d = $syn->description;
$p = $syn->pubDate;
$l = $syn->link;
echo $t.'<br>';
echo $d.'<br>';
echo $p.'<br>';
echo $l.'<br>';
}