Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取CDATA XML中的标记_Xml_Tags_Cdata - Fatal编程技术网

获取CDATA XML中的标记

获取CDATA XML中的标记,xml,tags,cdata,Xml,Tags,Cdata,抱歉发了垃圾邮件。但是我找不到我的问题的答案 我有一个XML,其中一个元素在CDATA中,我无法获取它 它是: 拜托,我试了几个小时。如果有人能帮助我,我很感激 对不起,我说的是英语。由于CDATA中的内容实际上是HTML,因此您最好将其解析为HTML,并以这种方式获取其内容: <?php $descriptionXml = "<description><![CDATA[<img src='http://w3.i.uol.com.br/Wap/2010/01

抱歉发了垃圾邮件。但是我找不到我的问题的答案

我有一个XML,其中一个元素在CDATA中,我无法获取它

它是:

拜托,我试了几个小时。如果有人能帮助我,我很感激


对不起,我说的是英语。

由于CDATA中的内容实际上是HTML,因此您最好将其解析为HTML,并以这种方式获取其内容:

<?php
    $descriptionXml = "<description><![CDATA[<img src='http://w3.i.uol.com.br/Wap/2010/01/19/midia-indoor-desemprego-seguro-desemprego-carteira-de-trabalho-1263914866285_142x100.jpg' align='left' />Trabalhadores do Rio de Janeiro que buscam o seguro-desemprego têm enfrentado filas que começam na noite anterior ao dia do atendimento. Hoje (17), na agência do Poupa Tempo da Central do Brasil, no centro da capital fluminense, cerca de duzentas pessoas já aguardavam na fila às 8h, quando o atendimento começou. ]]></description>";
    $description = simplexml_load_string($descriptionXml);

    $dom = new DOMDocument();
    $dom->loadHTML($description);

    echo $dom->getElementsByTagName('img')->item(0)->getAttribute('src');
?>

CDATA表示“字符数据”。它的意思是“即使这里的东西看起来像标记,也要像文本一样对待它”。所以CDATA中没有标记或元素,只有对人类读者来说可能类似于标记或元素的字符串

从另一个角度来看,CDATA告诉解析器不要处理内容

因此,如果您确实想处理内容,您要么必须去掉CDATA标记,要么必须对内容进行第二阶段的解析:第一次没有对内容进行解析,因此您需要获取CDATA部分中的文本,并通过另一阶段的解析将其反馈。

CDATA中的内容是“可见的”仅作为文本,无法通过XPath寻址。您需要解析description元素的
text()
,或者另一个选项是首先使用
禁用输出转义进行转换,然后从该输出中选择。
$xml = simplexml_load_file('http://rss.uol.com.br/feed/noticias.xml', 'SimpleXMLElement',LIBXML_NOCDATA);

echo $xml->channel->item[2]->description->img['src'];
<?php
    $descriptionXml = "<description><![CDATA[<img src='http://w3.i.uol.com.br/Wap/2010/01/19/midia-indoor-desemprego-seguro-desemprego-carteira-de-trabalho-1263914866285_142x100.jpg' align='left' />Trabalhadores do Rio de Janeiro que buscam o seguro-desemprego têm enfrentado filas que começam na noite anterior ao dia do atendimento. Hoje (17), na agência do Poupa Tempo da Central do Brasil, no centro da capital fluminense, cerca de duzentas pessoas já aguardavam na fila às 8h, quando o atendimento começou. ]]></description>";
    $description = simplexml_load_string($descriptionXml);

    $dom = new DOMDocument();
    $dom->loadHTML($description);

    echo $dom->getElementsByTagName('img')->item(0)->getAttribute('src');
?>