alle childs verwijderen in xml

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Schipper

Robert Schipper

04/02/2018 00:32:30
Quote Anchor link
Hallo,
Ik ben al een tijdje aan het stoeien om in mijn (correct gevormde) xml een <data> node inclusief kids te verwijderen. Met het huidige script (zonder while loop) wordt alleen de eerste node verwijderd. wie kan mij helpen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if (isset($_REQUEST['test'])){  
$dat=$_REQUEST['ordernummer'];

$xml = new DOMDocument("1.0", "UTF-8");
    $xml->load("bijlages.xml");
        
    $products = $xml->getElementsByTagName("data");
    $length = $products->length;
    
    for ($x = $length-1; $x >= 0; $x--){
    $ere = $products->item($x);
        
        if  ($ere->nodeValue == $_REQUEST['test']) {
                   $ere->parentNode->removeChild($ere->parentNode->firstChild);
        }

                    
echo $xml->saveXML();    
}

else { exit;}
?>
Gewijzigd op 04/02/2018 10:10:37 door Robert Schipper
 
PHP hulp

PHP hulp

29/11/2024 19:25:34
 
Thomas van den Heuvel

Thomas van den Heuvel

04/02/2018 02:15:07
Quote Anchor link
getElementsByTagName Return Values: A new DOMNodeList object containing all the matched elements.

Houdt dat niet in dat je iets uit een kopie verwijdert? Hoe er vervolgens ook iets verdwijnt uit het origineel is mij overigens een raadsel?

Zolang je de mutaties niet op $root uitvoert verandert er niets (in $xml)? Misschien helpt het eerste voorbeeld van removeChild() je verder? Verder is het wellicht handig om klasse-aanduidingen mee te geven aan je variabelen. Of commentaar bij de code, nu is het nogal een wirwar van variabelen.
 
Robert Schipper

Robert Schipper

04/02/2018 10:23:46
Quote Anchor link
Hallo Thomas,

Je hebt gelijk, er stonden een aantal onnodige variabelen in de code. Ik heb de code aangepast. Het klopt dat je een kopie aanpast van het orgineel. Dit is volgens mij standaard procedure voor de DOM. Dit is momenteel echter nog niet een issue. Mijn response is zonder while loop wel wat ik verwacht. Door bovenstaande code wordt netjes de firstChild van elke data node met gegeven ordernummer verwijderd. Het probleem is dat ik alle ouders (inclusief kinderen) wil verwijderen waar ordernummer een bepaalde waarde heeft. Hiervoor zou ik vermoedelijk met een while loop door de parent van <ordernummer> moeten lopen. Het opzetten van de while loop lukt echter niet.
 
Thomas van den Heuvel

Thomas van den Heuvel

04/02/2018 16:40:51
Quote Anchor link
Geef eens een voorbeeld van een XML, en hoe het resultaat er dan uit zou moeten zien.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.