ID:               46265
 Updated by:       [EMAIL PROTECTED]
 Reported By:      josh at coady dot us
-Status:           Open
+Status:           Wont fix
 Bug Type:         DOM XML related
 Operating System: ubuntu 8.04.1
 PHP Version:      5.2.6
 New Comment:

Just check, if it has a parentNode. If it has, it does exist, if it 
doesn't, it does not exist in the tree.


Previous Comments:
------------------------------------------------------------------------

[2008-10-09 19:23:16] josh at coady dot us

reproduce code should be the following (I realized the code wasnt
duplicating the exact situation I was encountering, so I modified it to
better match)


$doc =
DOMDocument::loadXML('<doc><x><a>1</a></x><x><a>1</a><y><a>1</a><a>0</a></y></x></doc>');

$nodes = $doc->getElementsByTagName('a');
$nodesToRemove = array();

foreach($nodes as $node)
{
  if($node->nodeValue == 1)
  {
     $nodesToRemove[] = $node;
  }
}

foreach($nodesToRemove as $node)
{
  $node->parentNode->parentNode->removeChild($node->parentNode);
}

------------------------------------------------------------------------

[2008-10-09 19:17:38] josh at coady dot us

Description:
------------
DOMNode should have a property like $exists to check if the node still
exists. This would be useful to avoid the "Node no longer exists"
warning.

We should be able to do something like

$node->parentNode->removeChild($node);

if($node->exists)
{
  // use node ..
}

Reproduce code:
---------------
$doc =
DOMDocument::loadXML('<doc><x><a>1</a></x><x><a>1</a><y><a>1</a><a>0</a></y></x></doc>');

$nodes = $doc->getElementsByTagName('a');
$nodesToRemove = array();

foreach($nodes as $node)
{
  if($node->nodeValue == 1)
  {
     $nodesToRemove[] = $node;
     $node->parentNode->removeChild($node);
  }
}

foreach($nodesToRemove as $node)
{
  $node->parentNode->removeChild($node);
}

Expected result:
----------------
This is more of a feature request. I expect to change the last loop to
something like

foreach($nodesToRemove as $node)
{
  if($node->exists)
  {
    $node->parentNode->removeChild($node);
  }
}



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=46265&edit=1

Reply via email to