无法从XML API检索CDATA的内容

时间:2017-05-04 11:00:12

标签: php xml xml-parsing

尝试使用PHP API中的simplexml_load_string()new SimpleXMLElement()解析XML数据,但我在解析CDATA内容时遇到问题。在PHP中使用上述函数或实例也应该将CDATA解析为节点的内容(通过从stringSimpleXMLElement标记将其LIBXML_NOCDATA强制转换为<![CData[2801086]]> ), 但这种情况并非如此。相反,数据会像Cdata一样出现(需要一段时间才会注意到,因为<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> 隐藏了渲染时,浏览器中的回显是不可见的)

这是一个包含API Feed中作业位置的片段(已经删除并删除了一些内容):

simplexml_load_string()

1 个答案:

答案 0 :(得分:0)

这耗费了很多时间,以为我会发布它以拯救别人的痛苦。 PHP中的new SimpleXMLElement()Cdata都需要CDATA大写(即Cdata),而网络浏览器(Chrome)在没有它的情况下很高兴。请注意,可能会随着不同的版本而改变,我在撰写本文时使用的是PHP 7。一旦大写,它就会出现没有预期的RGeo::GeoJSON.encode(<your_spatial_variable>, json_parser: :json) 包装。