Triyng 在 PHP 5.1 中取消设置 XML 对象记录行


Triyng to unset an XML object record line in PHP 5.1

我正在尝试取消设置一个简单的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