Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除同名的XML子项_Php_Xml_Xpath_Removechild - Fatal编程技术网

Php 删除同名的XML子项

Php 删除同名的XML子项,php,xml,xpath,removechild,Php,Xml,Xpath,Removechild,我有一个包含以下内容的大型XML: <?xml version="1.0" encoding="UTF-8"?> <valasz xmlns="" verzio="1.0"> <arak> <ar> <cikkid>439902</cikkid> <cikkszam>DVDV-16Z10</cikkszam> <listaar>1225,0000000</listaar> &l

我有一个包含以下内容的大型XML:

<?xml version="1.0" encoding="UTF-8"?>
<valasz xmlns="" verzio="1.0">
<arak>
<ar>
<cikkid>439902</cikkid>
<cikkszam>DVDV-16Z10</cikkszam>
<listaar>1225,0000000</listaar>
<ar>1157,6200000</ar>
<akcios_ar>1157,6200000</akcios_ar>
<devizanem>HUF</devizanem>
</ar>
<ar>
..
<ar>1157,6200000</ar>
...
</ar>
</arak>
    $node = readfile($arlista[0]);
    $nodes = simplexml_load_string($node);
    $arnode = $nodes->xpath("/valasz/arak/ar/ar");
        foreach ($arnode as &$ar){
            $nodes->removeChild($ar);
        }
    echo $nodes;
    [arak] => SimpleXMLElement Object
        (
            [ar] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [cikkid] => 439902
                            [cikkszam] => DVDV-16Z10
                            [listaar] => 1225,0000000
                            [akcios_ar] => 1157,6200000
                            [devizanem] => HUF
                        )

                    [1] => SimpleXMLElement Object
                        (
                        )

                )

        )

)
这只返回原始xml,而不删除arak->ar->ar子节点

    [arak] => SimpleXMLElement Object
        (
            [ar] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [cikkid] => 439902
                            [cikkszam] => DVDV-16Z10
                            [listaar] => 1225,0000000
                            [akcios_ar] => 1157,6200000
                            [devizanem] => HUF
                        )

                    [1] => SimpleXMLElement Object
                        (
                        )

                )

        )

)

我做错了什么?

SimpleXML中没有::removeChild这样的东西。
    [arak] => SimpleXMLElement Object
        (
            [ar] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [cikkid] => 439902
                            [cikkszam] => DVDV-16Z10
                            [listaar] => 1225,0000000
                            [akcios_ar] => 1157,6200000
                            [devizanem] => HUF
                        )

                    [1] => SimpleXMLElement Object
                        (
                        )

                )

        )

)
您希望在foreach循环中执行以下操作:

foreach ($arnode as $ar){
    unset($ar->{0});
}
    [arak] => SimpleXMLElement Object
        (
            [ar] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [cikkid] => 439902
                            [cikkszam] => DVDV-16Z10
                            [listaar] => 1225,0000000
                            [akcios_ar] => 1157,6200000
                            [devizanem] => HUF
                        )

                    [1] => SimpleXMLElement Object
                        (
                        )

                )

        )

)
请注意:发布的XML无效,但我确信这只是某种复制粘贴缺陷

    [arak] => SimpleXMLElement Object
        (
            [ar] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [cikkid] => 439902
                            [cikkszam] => DVDV-16Z10
                            [listaar] => 1225,0000000
                            [akcios_ar] => 1157,6200000
                            [devizanem] => HUF
                        )

                    [1] => SimpleXMLElement Object
                        (
                        )

                )

        )

)
完整代码:

    [arak] => SimpleXMLElement Object
        (
            [ar] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [cikkid] => 439902
                            [cikkszam] => DVDV-16Z10
                            [listaar] => 1225,0000000
                            [akcios_ar] => 1157,6200000
                            [devizanem] => HUF
                        )

                    [1] => SimpleXMLElement Object
                        (
                        )

                )

        )

)

foreach$arnode as&$ar{unset$ar->{0};}这还返回原始xmlThis,其中包含一些mods$nodes=simplexml_load_file$arlista[0];$arnode=$nodes->xpath/valasz/arak/ar/ar;foreach$arnode as$ar{unset$ar[0];}echo$nodes->asXML;