我正在尝试解析以下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;
}
}
}
答案 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;
}
}