Php 如何解析XML/HTML服务器';什么反应?

Php 如何解析XML/HTML服务器';什么反应?,php,xml,Php,Xml,我第一次来这里。 我从服务器得到这些行作为响应,并将它们保存在一个文件中。它们看起来像XML,对吗?我的任务是读取这些td标签的内容,并将它们放入其他结构化文件(Excel)中。问题是我不知道怎么做 目前,我想我将剥离文件的第一行和最后一行,然后将它们解析为XML。但是你知道其他的方法吗?谢谢 <CallbackContent><![CDATA[ <table cellspacing="0" border="0" cellpadding="0" width="10

我第一次来这里。 我从服务器得到这些行作为响应,并将它们保存在一个文件中。它们看起来像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>

22/02/2010                        
510,02
]]>

顺便说一句,我使用的是PHP。

您无法使用XML解析器读取该表,因为它是作为CDATA块推出的,而CDATA块相当于字符串文本。

首先,使用XML解析器读取整个内容,以便可以提取CDATA部分的内容。然后通过一个XML解析器将其填充。

使用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";
    }
}
$xml='1!'
22/02/2010                        
510,02
]]>';
$CallbackContent=simplexml\u load\u字符串($xml);
$html=(字符串)$CallbackContent;
//if-XHTML
$table=simplexml\u load\u字符串($html);
//否则,请使用
$dom=新的DOMDocument;
$dom->loadHTML($html);
$table=simplexml\u import\u dom($dom)->body->table;
foreach($table->tr作为$tr)
{
回显'tr class=',$tr['class'],“\n”;
foreach($tr->td为$td)
{
回显'td align=',$td['align'],'-value:',(字符串)$td,“\n”;
}
}

谢谢,这就是为什么我告诉你我将去掉第一行和最后一行。这样做可以吗?我不知道,因为我看不到您的整个文档,也看不到它是如何使用的。您希望删除的位可能具有您提供的示例之外我不知道的用途或上下文。整个文档具有相同的结构,它可能有更多的名称和标记。我只需要得到tagsThanks的内容。您能告诉我如何从CDATA部分提取内容吗?它的结构很奇怪,你不知道。您获取它并将其输入HTML解析器。您已经遍历了HTMLDOM。但是这个人需要一个excel文件。因此,追加为逗号分隔的值。使用标题附件配置以excel的形式抛出。@Josh Davis:它工作得很好,非常感谢,你救了我一天。看起来我没有研究XML的CDATA定义@编码器:没关系,我只想提取标签的内容。