使用SimpleXML解析从Zoho CRM API解析XML数据

时间:2018-01-03 19:38:39

标签: php simplexml

我正在尝试解析以下XML数据,这些数据是通过Zoho CRM返回的:

<?xml version="1.0" encoding="UTF-8"?>
<response uri="/crm/private/xml/Accounts/getRecords">
    <result>
        <Accounts>
            <row no="1">
                <FL val="ACCOUNTID">941215000005051001</FL>
                <FL val="SMOWNERID">941215000003961005</FL>
                <FL val="Account Owner"><![CDATA[Jamie Clark]]></FL>
                <FL val="Account Name"><![CDATA[Smackers]]></FL>
                <FL val="Phone"><![CDATA[901-308-2556]]></FL>
                <FL val="Account Number"><![CDATA[0]]></FL>
                <FL val="Industry"><![CDATA[Restaurant]]></FL>
                <FL val="SMCREATORID">941215000003961005</FL>
                <FL val="Created By"><![CDATA[Jamie Clark]]></FL>
                <FL val="MODIFIEDBY">941215000001076002</FL>
                <FL val="Modified By"><![CDATA[Phillip Geller]]></FL>
                <FL val="Created Time"><![CDATA[2018-01-02 10:25:59]]></FL>
                <FL val="Modified Time"><![CDATA[2018-01-02 17:59:10]]></FL>
                <FL val="Billing Street"><![CDATA[1525 Airways Blvd]]></FL>
                <FL val="Shipping Street"><![CDATA[1525 Airways Blvd]]></FL>
                <FL val="Billing City"><![CDATA[Memphis]]></FL>
                <FL val="Shipping City"><![CDATA[Memphis]]></FL>
                <FL val="Billing State"><![CDATA[TN]]></FL>
                <FL val="Shipping State"><![CDATA[TN]]></FL>
                <FL val="Billing Code"><![CDATA[38114]]></FL>
                <FL val="Shipping Code"><![CDATA[38114]]></FL>
                <FL val="Last Activity Time"><![CDATA[2018-01-02 17:59:10]]></FL>
                <FL val="Stage"><![CDATA[Documentation Pending]]></FL>
                <FL val="Support Contract"><![CDATA[Yes - Free]]></FL>
                <FL val="Service Type"><![CDATA[POS + CC]]></FL>
                <FL val="Active?"><![CDATA[Not Active]]></FL>
                <FL val="Auto Billing"><![CDATA[No]]></FL>
                <FL val="1st Contact Name"><![CDATA[Kevin Jamerson]]></FL>
                <FL val="Virtual HASP key?"><![CDATA[false]]></FL>
            </row>
        </Accounts>
    </result>
</response>

我正在使用SimpleXML来解析XML,我试图为每一行列出“帐户名”和“帐户所有者”。完整的XML文档中有20行。但是,我没有获取“帐户名”和“帐户所有者”的个别值,而是收到第一行的值... 20次。

以下是我的PHP:

$xml = simplexml_load_string($result);          
$row = $xml->result->Accounts->row;
$value = $xml->result->Accounts->row->FL;
foreach ($row as $rows) {
    foreach ($value as $values) {
        switch((string) $values['val']) {
            case 'Account Name':
                echo $values."</br>";
                break;
            case 'Account Owner':
                echo $values."</br>";
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我可以通过在第一个$value语句中更改foreach变量的值来解决此问题。

foreach ($row as $rows) {
            $value = $rows->FL;
            foreach ($value as $values) {
                switch((string) $values['val']) {
                    case 'Account Name':
                        echo "Account Name: ".$values."<br />";
                        break;
                    case 'Case Owner':
                        echo "Case Owner: ".$values."<br />";
                        break;
                    case 'Status':
                        echo "Status: ".$values."<br />";
                        break;
                    case 'Subject':
                        echo "Subject: ".$values."<br />";
                        break;
                    case 'Description':
                        echo "Description: ".$values."<br />";
                        break;
                    case 'Solution':
                        echo "Solution: ".$values."<br />";
                        break;
                }
            }