如何阅读带有 HTML 标签和 PHP 的 XML?
How to read this XML with that has HTML tags with PHP?
我已经用 php 和 XML 工作过几次,但是这种 XML 在开头和结尾都有 Html 标签:
没有直接 link 到 xml 文件,所以我必须使用 file_get_contents()。
我正在使用这个 php 代码:
$url = "https://www.tandildiario.com/suscripcion.php?section=4";
$xml = file_get_contents($url);
$feed = simplexml_load_string($xml);
foreach ($feed->channel->item as $item) {
.....
我尝试了不同的东西..大多数错误是这样的:
警告:simplexml_load_string():实体:第 14 行:解析器错误:实体 'oacute' 未在第 37 行的 D:\reader.php 中定义
由于原来的XML不正确(它在描述标签中包含未转义的HTML),您可以在尝试解析它之前修复它。自己添加 CDATA 属性:
$url = "https://www.tandildiario.com/suscripcion.php?section=4";
$xml = file_get_contents($url);
// Add the CDATA tags for the description
$xml = str_replace('<description>', '<description><![CDATA[', $xml);
$xml = str_replace('</description>', ']]></description>', $xml);
$feed = simplexml_load_string($xml);
您可以在加载 XML 之前解码 HTML 实体。
$url = "https://www.tandildiario.com/suscripcion.php?section=5";
$xml = file_get_contents($url);
$feed = simplexml_load_string(html_entity_decode($xml, null, "UTF-8"));
foreach ( $feed->channel->item as $item ) {
echo $item->asXML();
}
我已经用 php 和 XML 工作过几次,但是这种 XML 在开头和结尾都有 Html 标签:
没有直接 link 到 xml 文件,所以我必须使用 file_get_contents()。
我正在使用这个 php 代码:
$url = "https://www.tandildiario.com/suscripcion.php?section=4";
$xml = file_get_contents($url);
$feed = simplexml_load_string($xml);
foreach ($feed->channel->item as $item) {
.....
我尝试了不同的东西..大多数错误是这样的:
警告:simplexml_load_string():实体:第 14 行:解析器错误:实体 'oacute' 未在第 37 行的 D:\reader.php 中定义
由于原来的XML不正确(它在描述标签中包含未转义的HTML),您可以在尝试解析它之前修复它。自己添加 CDATA 属性:
$url = "https://www.tandildiario.com/suscripcion.php?section=4";
$xml = file_get_contents($url);
// Add the CDATA tags for the description
$xml = str_replace('<description>', '<description><![CDATA[', $xml);
$xml = str_replace('</description>', ']]></description>', $xml);
$feed = simplexml_load_string($xml);
您可以在加载 XML 之前解码 HTML 实体。
$url = "https://www.tandildiario.com/suscripcion.php?section=5";
$xml = file_get_contents($url);
$feed = simplexml_load_string(html_entity_decode($xml, null, "UTF-8"));
foreach ( $feed->channel->item as $item ) {
echo $item->asXML();
}