如何解析XML / HTML服务器的响应?

时间:2010-02-24 11:50:12

标签: php xml

我第一次来这里。 我将这些行作为服务器的响应并将其保存在文件中。它们看起来像XML,对吗?我的任务是阅读那些td标签的内容并将它们放入其他结构化文件(Excel)中。问题是我不知道该怎么做。

目前,我想我将剥离文件的第一行和最后一行,然后将它们解析为XML。但你知道其他方法吗?感谢。

<CallbackContent><![CDATA[
    <table cellspacing="0" border="0" cellpadding="0" width="100%">
        <tr class="rowcolor2">
            <td align="left" style="padding:5px;">22/02/2010</td>                        
            <td align="right" style="padding:5px;">510,02</td>
        </tr>
    </table>     
]]></CallbackContent>
是的,我正在使用PHP。

3 个答案:

答案 0 :(得分:1)

使用SimpleXML之类的XML解析器。它将允许您安全地提取CDATA。

然后,如果HTML符合XML(换句话说,它是XHTML),您可以使用SimpleXML从中提取数据。例如:

$xml='<CallbackContent><![CDATA[
    <table cellspacing="0" border="0" cellpadding="0" width="100%">
        <tr class="rowcolor2">
            <td align="left" style="padding:5px;">22/02/2010</td>                        
            <td align="right" style="padding:5px;">510,02</td>
        </tr>
    </table>     
]]></CallbackContent>';

$CallbackContent = simplexml_load_string($xml);
$html = (string) $CallbackContent;

// if XHTML
$table = simplexml_load_string($html);

// otherwise, use
$dom = new DOMDocument;
$dom->loadHTML($html);
$table = simplexml_import_dom($dom)->body->table;

foreach ($table->tr as $tr)
{
    echo 'tr class=', $tr['class'], "\n";
    foreach ($tr->td as $td)
    {
        echo 'td align=', $td['align'], ' - value: ', (string) $td, "\n";
    }
}

答案 1 :(得分:0)

您无法使用XML解析器读取该表,因为它是作为CDATA块推出的,这会阻塞字符串文字。

答案 2 :(得分:0)

首先,使用XML解析器阅读整个内容,以便您可以提取CDATA部分的内容。然后将其填入HTML parser