diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php
index fdd8fd5b3e10625dd890e9e93bf12241178577e9..bd896f8eedcebf54ea13ac2742955fae7f543906 100644
--- a/lib/SimpleSAML/Metadata/SAMLParser.php
+++ b/lib/SimpleSAML/Metadata/SAMLParser.php
@@ -163,10 +163,8 @@ class SimpleSAML_Metadata_SAMLParser {
 		for($i = 0; $i < $entityElement->childNodes->length; $i++) {
 			$child = $entityElement->childNodes->item($i);
 
-			/* Skip text nodes. */
-			if($child instanceof DOMText) {
-				continue;
-			}
+			// Unless the child is a DOMElement, skip.
+			if ( !($child instanceof DOMelement) ) continue;
 
 			if(SimpleSAML_Utilities::isDOMElementOfType($child, 'Signature', '@ds') === TRUE) {
 				$this->processSignature($child);
@@ -262,12 +260,15 @@ class SimpleSAML_Metadata_SAMLParser {
 	 */
 	public static function parseDescriptorsFile($file) {
 
+		if ($file === NULL) throw new Exception('Cannot open file NULL. File name not specified.');
+
 		$doc = new DOMDocument();
 
 		$res = $doc->load($file);
 		if($res !== TRUE) {
 			throw new Exception('Failed to read XML from file: ' . $file);
 		}
+		if ($doc->documentElement === NULL) throw new Exception('Opened file is not an XML document: ' . $file);
 
 		return self::parseDescriptorsElement($doc->documentElement);
 	}
@@ -309,7 +310,7 @@ class SimpleSAML_Metadata_SAMLParser {
 		}
 
 		assert('$element instanceof DOMElement');
-
+		
 		$entitiesValidator = NULL;
 
 		if(SimpleSAML_Utilities::isDOMElementOfType($element, 'EntityDescriptor', '@md') === TRUE) {