diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php
index 898d1284ecf636170fe50b5a47c9603dc5949362..25af341b8491a9f7344cefa8e1141ea5beb8423e 100644
--- a/lib/SimpleSAML/Metadata/SAMLParser.php
+++ b/lib/SimpleSAML/Metadata/SAMLParser.php
@@ -93,13 +93,13 @@ class SimpleSAML_Metadata_SAMLParser {
 
 		assert('$entityElement instanceof DOMElement');
 
-		/* Extract the entityID from the EntityDescriptor element. This is a required
+		/* Extract the entity id from the EntityDescriptor element. This is a required
 		 * attribute, so we throw an exception if it isn't found.
 		 */
 		if(!$entityElement->hasAttribute('entityID')) {
 			throw new Exception('EntityDescriptor missing required entityID attribute.');
 		}
-		$this->entityID = $entityElement->getAttribute('entityID');
+		$this->entityId = $entityElement->getAttribute('entityID');
 
 
 		/* Look over the child nodes for any known element types. */
@@ -188,7 +188,7 @@ class SimpleSAML_Metadata_SAMLParser {
 
 	/**
 	 * This function parses a file where the root node is either an EntityDescriptor element or an
-	 * EntitiesDescriptor element. In both cases it will return an array of SAMLParser instances. If
+	 * EntitiesDescriptor element. In both cases it will return an associative array of SAMLParser instances. If
 	 * the file contains a single EntityDescriptorElement, then the array will contain a single SAMLParser
 	 * instance.
 	 *
@@ -210,10 +210,11 @@ class SimpleSAML_Metadata_SAMLParser {
 
 	/**
 	 * This function parses a string with XML data. The root node of the XML data is expected to be either an
-	 * EntityDescriptor element or an EntitiesDescriptor element. It will return an array of SAMLParser instances.
+	 * EntityDescriptor element or an EntitiesDescriptor element. It will return an associative array of
+	 * SAMLParser instances.
 	 *
 	 * @param $string  The string with XML data.
-	 * @return An array of SAMLParser instances.
+	 * @return An associative array of SAMLParser instances. The key of the array will be the entity id.
 	 */
 	public static function parseDescriptorsString($string) {
 
@@ -230,11 +231,11 @@ class SimpleSAML_Metadata_SAMLParser {
 
 	/**
 	 * This function parses a DOMElement which represents either an EntityDescriptor element or an
-	 * EntitiesDescriptor element. It will return an array of SAMLParser instances in both cases.
+	 * EntitiesDescriptor element. It will return an associative array of SAMLParser instances in both cases.
 	 *
 	 * @param $element  The DOMElement which contains the EntityDescriptor element or the EntitiesDescriptor
 	 *                  element.
-	 * @return An array of SAMLParser instances.
+	 * @return An associative array of SAMLParser instances. The key of the array will be the entity id.
 	 */
 	public static function parseDescriptorsElement($element) {
 
@@ -256,17 +257,28 @@ class SimpleSAML_Metadata_SAMLParser {
 
 		$ret = array();
 		foreach($elements as $e) {
-			$ret[] = self::parseElement($e);
+			$entity = self::parseElement($e);
+			$ret[$entity->getEntityId()] = $entity;
 		}
 
 		return $ret;
 	}
 
 
+	/**
+	 * This function returns the entity id of this parsed entity.
+	 *
+	 * @return The entity id of this parsed entity.
+	 */
+	public function getEntityId() {
+		return $this->entityId;
+	}
+
+
 	/**
 	 * This function returns the metadata for SAML 1.x SPs in the format simpleSAMLphp expects.
 	 * This is an associative array with the following fields:
-	 * - 'entityID': The entity id of the entity described in the metadata.
+	 * - 'entityid': The entity id of the entity described in the metadata.
 	 * - 'AssertionConsumerService': String with the url of the assertion consumer service which supports
 	 *   the browser-post binding.
 	 *
@@ -278,7 +290,7 @@ class SimpleSAML_Metadata_SAMLParser {
 
 		$ret = array();
 
-		$ret['entityID'] = $this->entityID;
+		$ret['entityid'] = $this->entityId;
 
 
 		/* Find SP information which supports one of the SAML 1.x protocols. */
@@ -307,8 +319,8 @@ class SimpleSAML_Metadata_SAMLParser {
 	/**
 	 * This function returns the metadata for SAML 2.0 IdPs in the format simpleSAMLphp expects.
 	 * This is an associative array with the following fields:
-	 * - 'entityID': The entity id of the entity described in the metadata.
-	 * - 'name': Autogenerated name for this entity. Currently set to the entityID.
+	 * - 'entityid': The entity id of the entity described in the metadata.
+	 * - 'name': Autogenerated name for this entity. Currently set to the entity id.
 	 * - 'SingleSignOnService': String with the url of the SSO service which supports the redirect binding.
 	 * - 'SingleLogoutService': String with the url where we should send logout requests/responses.
 	 * - 'certFingerprint': Fingerprint of the X509Certificate from the metadata.
@@ -321,9 +333,9 @@ class SimpleSAML_Metadata_SAMLParser {
 
 		$ret = array();
 
-		$ret['entityID'] = $this->entityID;
+		$ret['entityid'] = $this->entityId;
 
-		$ret['name'] = $this->entityID;
+		$ret['name'] = $this->entityId;
 
 		/* Find IdP information which supports the SAML 1.x protocol. */
 		$idp = $this->getIdPDescriptors(self::$SAML1xProtocols);
@@ -363,7 +375,7 @@ class SimpleSAML_Metadata_SAMLParser {
 	/**
 	 * This function returns the metadata for SAML 2.0 SPs in the format simpleSAMLphp expects.
 	 * This is an associative array with the following fields:
-	 * - 'entityID': The entity id of the entity described in the metadata.
+	 * - 'entityid': The entity id of the entity described in the metadata.
 	 * - 'AssertionConsumerService': String with the url of the assertion consumer service which supports
 	 *   the browser-post binding.
 	 * - 'SingleLogoutService': String with the url where we should send logout requests/responses.
@@ -377,7 +389,7 @@ class SimpleSAML_Metadata_SAMLParser {
 
 		$ret = array();
 
-		$ret['entityID'] = $this->entityID;
+		$ret['entityid'] = $this->entityId;
 
 
 		/* Find SP information which supports the SAML 2.0 protocol. */
@@ -422,8 +434,8 @@ class SimpleSAML_Metadata_SAMLParser {
 	/**
 	 * This function returns the metadata for SAML 2.0 IdPs in the format simpleSAMLphp expects.
 	 * This is an associative array with the following fields:
-	 * - 'entityID': The entity id of the entity described in the metadata.
-	 * - 'name': Autogenerated name for this entity. Currently set to the entityID.
+	 * - 'entityid': The entity id of the entity described in the metadata.
+	 * - 'name': Autogenerated name for this entity. Currently set to the entity id.
 	 * - 'SingleSignOnService': String with the url of the SSO service which supports the redirect binding.
 	 * - 'SingleLogoutService': String with the url where we should send logout requests/responses.
 	 * - 'certFingerprint': Fingerprint of the X509Certificate from the metadata.
@@ -436,9 +448,9 @@ class SimpleSAML_Metadata_SAMLParser {
 
 		$ret = array();
 
-		$ret['entityID'] = $this->entityID;
+		$ret['entityid'] = $this->entityId;
 
-		$ret['name'] = $this->entityID;
+		$ret['name'] = $this->entityId;
 
 		/* Find IdP information which supports the SAML 2.0 protocol. */
 		$idp = $this->getIdPDescriptors(self::$SAML20Protocols);