我有一个正在执行的请求,但它不返回结果过滤器!我想听听你的意见!
$xmlData = '<ZohoCreator>
<application name="ecoute">
<form name="'.$formulaire.'">
<criteria>
<field name="ID" compOperator="Equals" value="'.$conseillerID.'"></field>
<reloperator>AND</reloperator>
<field name="Concessionnaire" compOperator="Equals" value="'.$concessionnaire.'"></field>
<field name="Added_Time" compOperator="GreaterThan" value="'.$dateDebut->format('d-M-Y H:i:s').'"></field>
<reloperator>AND</reloperator>
<field name="Added_Time" compOperator="LessThan" value="'.$dateFin->format('d-M-Y H:i:s').'"></field>
</criteria>
</form>
</application>
</ZohoCreator>';
我的问题是,如果我不能这样做,那么我使用的xpath是否是一种更简单的方式,比如:
$Column = $feed->xpath('//record/column[@name="'.$champRecherche.'"]/value');///descendant::*');
以下是我尝试过的一个例子,但效果不太好,所以不要评判这只是一次尝试!!:
$filter = $feed->xpath('//record/column[@name="'.$nomChampDate.'"]/value[date( >= "'.$dateDebut->format('d-m-Y').'" and @name="'.$nomChampDate.'" <= "'.$dateFin->format('d-m-Y'))]');
问题是我没有使用xpath这个mutch,所以我如何用它过滤日期?
以下是我收到的退货示例:
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<form name="Conseillers">
<criteria>
<field name="ID" compOperator="Equals" value="1111111111111"></field>
</criteria>
<records>
<record>
<column name="Modified_User_IP_Address">
<value><![CDATA[192.168.0.1]]></value>
</column>
<column name="Added_User_IP_Address">
<value><![CDATA[192.168.0.1]]></value>
</column>
<column name="Added_User">
<value><![CDATA[123456]]></value>
</column>
<column name="Added_Time">
<value><![CDATA[28-Mar-2013 11:07:54]]></value>
</column>
这只有在DOMXpath:evaluate()、SimpleXMLElement::xpath()不返回标量的情况下才可能。
获取记录/列元素:
//record/column
使用名称属性过滤它们:
//records/column[@name="Added_User_IP_Address"]
获取值子元素:
//record/column[@name="Added_User_IP_Address"]/value
将第一个找到的节点强制转换为字符串(返回所有文本内容),否则将返回节点列表。
string(//record/column[@name="Added_User_IP_Address"]/value)
完整示例:
$xml = <<<'XML'
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<form name="Conseillers">
<records>
<record>
<column name="Modified_User_IP_Address">
<value><![CDATA[192.168.0.1]]></value>
</column>
<column name="Added_User_IP_Address">
<value><![CDATA[192.168.0.1]]></value>
</column>
</record>
</records>
</form>
</response>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
var_dump(
$xpath->evaluate('string(//record/column[@name="Added_User_IP_Address"]/value)')
);
输出:
string(11) "192.168.0.1"