XML ZohoCreator按日期筛选


XML ZohoCreator filter by Date

我有一个正在执行的请求,但它不返回结果过滤器!我想听听你的意见!

$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"