使用Simple XML解析XML字符串时丢失标签和数据

时间:2012-08-23 08:12:53

标签: php xml parsing simplexml zoho

我遇到了一个小问题。我正在使用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标签中没有内部内容,反之亦然(这是正确的吗?)。 / p>

我有什么选择?自己写一个解析器并不是一个选择。

谢谢!

1 个答案:

答案 0 :(得分:1)

获取属性:

foreach ($value->attributes() as $key => $val){
    // get all attributes
}

获取数据:

echo (string) $load->result->Contacts->row->FL[0];