我正在尝试取消设置一个简单的XML对象,但没有成功。良好的记录匹配,但许多语法未能取消设置((,所以我在这里乞求解释^^。XML如下所示:
`...<data number="313" user="001" order="313">
<column>
<parameter name="idcompte" type="cdata"><![CDATA[126]]></parameter>
<parameter name="nomachat" type="cdata"><![CDATA[terreau universel LR]]></parameter>
<parameter name="date" type="cdata"><![CDATA[2005-08-07]]></parameter>
<parameter name="qte" type="cdata"><![CDATA[0.01]]></parameter>
<parameter name="puht" type="cdata"><![CDATA[46.3150]]></parameter>
<parameter name="unit" type="cdata"><![CDATA[m3]]></parameter>
<parameter name="desc" type="cdata"><![CDATA[C5 de 10 tiges]]></parameter>
<parameter name="paye" type="string">1</parameter>
<parameter name="idcat" type="cdata"><![CDATA[048]]></parameter>
<parameter name="culture" type="cdata"><![CDATA[067]]></parameter>
</column>
和一个数组列表所有$conditions(0=>数组(0=>'idcat,1=>048(,1=>数组(idfourn等((通过取消设置错误的记录来混合$object上的过滤器。
$good=0;
echo count($obj);
foreach ($obj as $data) {
//$number=$data['number'];
foreach ($data->column->parameter as $b) {
foreach ($conditions as $c) {
if((string)$b['name']==$c[0] and (string)$b==$c[1]){
++$good;
//echo '<i>l''attribut $bname ('.$b['name'].'='.(string)$b.')</i> soit c0:'.$c[0].' doit etre = à c1:'.$c[1].'<br/>';
}
else{ unset($data); }
}
}
}
echo '<b>'.$good.'</b> results';
echo count($obj);
不幸的是,count(( 休息相同。感谢法国的任何帮助。
使用 xpath()
进行选择,unset()
删除:
$xml = simplexml_load_string($x); // assume XML in $x
$nodes = $xml->xpath("/column/parameter[@name='idcat' or @name='unit']");
foreach ($nodes as $node) unset($node[0]);
请参阅第 2 行中的 xpath
语句:
-
[]
标记条件 -
@
引用属性而不是子节点 - 选定的节点将作为 SimpleXML 元素存储在数组
$nodes
中 - 我没有完全理解你的
$condition
数组,所以我只是从你的例子中选择了 2 个属性
使用unset($node[0])
删除
看到它的工作原理:https://eval.in/236946