Hi,
Ich habe ein XML Dokument, bei dem ich alle artikel- Knoten (samt Childnodes), die leer sind löschen.
Jetzt habe ich das auch schon so halb hinbekommen.
Halb leider nur, da er mir nur jeden 2. Knoten löscht. Ich habe keine Ahnung warum.
Wenn ich mir die Artikelknoten in der Schleife anzeigen lasse, kommen alle vor.
Es scheint so, als ob der Zeiger nach deleteNode() schon bei dem nächsten Knoten wäre.
deleteNode
Ich habe ein XML Dokument, bei dem ich alle artikel- Knoten (samt Childnodes), die leer sind löschen.
Jetzt habe ich das auch schon so halb hinbekommen.
Halb leider nur, da er mir nur jeden 2. Knoten löscht. Ich habe keine Ahnung warum.
Wenn ich mir die Artikelknoten in der Schleife anzeigen lasse, kommen alle vor.
Es scheint so, als ob der Zeiger nach deleteNode() schon bei dem nächsten Knoten wäre.
deleteNode
PHP:
function deleteNode($node) {
deleteChildren($node);
$parent = $node->parentNode;
$oldnode = $parent->removeChild($node);
}
function deleteChildren($node) {
while (isset($node->firstChild)) {
deleteChildren($node->firstChild);
$node->removeChild($node->firstChild);
}
}
PHP:
$abfrage_cleaner = $abfrage->getElementsByTagName('artnr');
foreach ($abfrage_cleaner as $abfrage_row)
{
$diff = $abfrage_row->getElementsByTagName('diff');
$diff_empty = 0;
foreach ($diff as $diff_row)
{
$diff_amount = $diff_row->getAttribute('amount');
$diff_pices = $diff_row->getAttribute('pices');
$diff_empty += $diff_amount + $diff_pices;
}
if ($diff_empty == 0)
{
deleteNode($abfrage_row);
}
}