2017-05-04 47 views
0

已嘗試使用PHP中的simplexml_load_string()new SimpleXMLElement()從XML API解析XML數據,但我在解析CDATA內容時遇到問題。在PHP中使用上述函數或實例還應解析CDATA作爲節點的內容(通過將其從SimpleXMLElement中類型化爲string或使用LIBXML_NOCDATA標誌),但情況並非如此。相反,數據出來像<![CData[2801086]]>(這花了一段時間發現在瀏覽器中迴盪,這是不可見,因爲Cdata從渲染隱藏它)無法從XML API檢索CDATA的內容

下面是一個包含了API飼料內的工作位置的片斷(已下調並刪除了一些內容):

<position> 
    <Id><![CData[2801086]]></Id> 
    <url> 
    <![CData[http://foo.bar.co.uk/ViewVacancy.aspx?2801086-foo]]> 
    </url> 
    <JobReference><![CData[VAC-00117]]></JobReference> 
    <JobTitle><![CData[Foo Bar]]></JobTitle> 
    <County><![CData[Nottinghamshire]]></County> 
    <Town><![CData[Nottingham]]></Town> 
    <Postcode><![CData[NG11 0EE]]></Postcode> 
</position> 
+1

CDATA必須寫成大寫。你寫它的方式,它不是格式良好的XML。 –

+0

感謝您的反饋邁克爾。是的,我知道(已經在下面回答了)。不幸的是,我自己寫的,所以需要讓提供服務的開發人員知道 – willsquire

回答

0

這消耗了很多小時,所以我認爲我會發布它來拯救別人的痛苦。 PHP中的simplexml_load_string()new SimpleXMLElement()都需要大寫Cdata(即CDATA),而Web瀏覽器(Chrome)在沒有它的情況下很高興。請注意,這可能會因不同的版本而有所不同,我在撰寫本文時使用PHP 7。一旦大寫,它就會像預期的那樣沒有Cdata包裝。

+0

Chrome是否將其解析爲HTML? HTML不區分大小寫,XML是。 – ThW

+0

解釋它。當瀏覽器解釋它,因爲它應該和PHP沒有拋出任何例外,我的眼睛瞥了一會兒。 – willsquire