我遇到了一个小问题。我正在使用Zoho CRM API,它以如下格式返回我一个XML:
<response uri="/crm/private/xml/Contacts/getRecords">
<result>
<Contacts>
<row no="1">
<FL val="Contact Owner">
<![CDATA[ Kristo Vaher ]]>
</FL>
<FL val="Lead Source">
<![CDATA[ Partner ]]>
</FL>
</row>
</Contacts>
</result>
</response>
当我通过simplexml_load_string()创建一个XML对象时,它会在新对象中提供大部分XML,但不会给我FL标记(CDATA元素)的"内部"字符串,即我真正感兴趣的数据。
我的新SimpleXML对象只有以下数据:
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[val] => Contact Owner
)
)
我的最佳猜测是,这是因为XML实际上不应该以这种方式构建,我在某个地方读到,如果XML标记具有属性,则不能在其中包含内部内容,反之亦然(这是正确的吗?)。
我的备选方案是什么?自己编写解析器并不是一个真正的选择。
谢谢!
获取属性:
foreach ($value->attributes() as $key => $val){
// get all attributes
}
获取数据:
echo (string) $load->result->Contacts->row->FL[0];