Before xml removal: After removing item2: Here is the sample code snippet (And yes, I pull the list using XML::Simple.) my $manifesto = XMLin($google_manifest); foreach my $project (sort keys %{$manifesto->{'project'}}){ if ($project){ $project = 'a/aosp/' . $project; print "Project = $project \n"; my $query1 = '//project[@name = "' . $project . '"]'; my ($node) = $doc->findnodes($query1); if ($node){ $node->unbindNode(); } } } print $doc->toFile($new_manifest);