XML / HTML sunucunun tepkisini ayrıştırmak nasıl?

3 Cevap php

my first time here. I got these lines as a response from the server and saved them in a file. They look like XML, right? My task is to read the content of those td tags and put them into other structured file(Excel). The problem is I dont know how to do that.

Şu anda, ben dosyaya daha sonra XML bunları ayrıştırmak ilk ve son satırı şerit olacağını düşünüyorum. Ama başka yollar biliyor musunuz? Teşekkürler.

<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>

Btw, PHP kullanıyorum.

3 Cevap

Böyle SimpleXML gibi bir XML çözümleyici kullanın. Bu güvenle CDATA ayıklamak için izin verecektir.

HTML, XML uyumlu (diğer bir deyişle, bu XHTML bulunuyor) ise o zaman bunu veri ayıklamak için SimpleXML kullanabilirsiniz. Örneğin:

$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";
    }
}

Bu bir dize için Çelişkili Sesler bir CDATA blok olarak dışarı itilir, çünkü bir XML çözümleyici ile tabloyu okuyamıyor.

Eğer CDATA bölümünün içeriğini çekin böylece İlk olarak, bir XML ayrıştırıcı kullanarak her şeyi okudum. Sonra bu almak ve bir HTML parser aracılığıyla şeyler.