diff --git a/lib/SAML2/Assertion.php b/lib/SAML2/Assertion.php
index e08c87e5a4c71ff479ca1eff6f7d760bd0ca12b5..327e104a071ffb3dc439750c5aa203405aef63e6 100644
--- a/lib/SAML2/Assertion.php
+++ b/lib/SAML2/Assertion.php
@@ -194,7 +194,7 @@ class SAML2_Assertion implements SAML2_SignedElement {
 		if (empty($issuer)) {
 			throw new Exception('Missing <saml:Issuer> in assertion.');
 		}
-		$this->issuer = $issuer[0]->textContent;
+		$this->issuer = trim($issuer[0]->textContent);
 
 		$this->parseSubject($xml);
 		$this->parseConditions($xml);
@@ -316,7 +316,7 @@ class SAML2_Assertion implements SAML2_SignedElement {
 			case 'AudienceRestriction':
 				$audiences = SAML2_Utils::xpQuery($node, './saml:Audience');
 				foreach ($audiences as &$audience) {
-					$audience = $audience->textContent;
+					$audience = trim($audience->textContent);
 				}
 				if ($this->validAudiences === NULL) {
 					/* The first (and probably last) AudienceRestriction element. */
@@ -388,7 +388,7 @@ class SAML2_Assertion implements SAML2_SignedElement {
 		}
 		$accr = $accr[0];
 
-		$this->authnContext = $accr->textContent;
+		$this->authnContext = trim($accr->textContent);
 	}
 
 
@@ -428,7 +428,7 @@ class SAML2_Assertion implements SAML2_SignedElement {
 
 			$values = SAML2_Utils::xpQuery($attribute, './saml:AttributeValue');
 			foreach ($values as $value) {
-				$this->attributes[$name][] = $value->textContent;
+				$this->attributes[$name][] = trim($value->textContent);
 			}
 		}
 	}
diff --git a/lib/SAML2/AttributeQuery.php b/lib/SAML2/AttributeQuery.php
index 69b31bb6358b8fe90b474648ac52b92d58c22fcb..3be052bd3ede6db884d7f46ab916b5b3f7ce0b52 100644
--- a/lib/SAML2/AttributeQuery.php
+++ b/lib/SAML2/AttributeQuery.php
@@ -82,7 +82,7 @@ class SAML2_AttributeQuery extends SAML2_SubjectQuery {
 
 			$values = SAML2_Utils::xpQuery($attribute, './saml:AttributeValue');
 			foreach ($values as $value) {
-				$this->attributes[$name][] = $value->textContent;
+				$this->attributes[$name][] = trim($value->textContent);
 			}
 		}
 	}
diff --git a/lib/SAML2/LogoutRequest.php b/lib/SAML2/LogoutRequest.php
index f239c9a01d4ab73209f95a0cadb62ac242e6a54a..c0718e45be68097ee1ec9fad835b1a33615688ac 100644
--- a/lib/SAML2/LogoutRequest.php
+++ b/lib/SAML2/LogoutRequest.php
@@ -45,7 +45,7 @@ class SAML2_LogoutRequest extends SAML2_Request {
 
 		$sessionIndex = SAML2_Utils::xpQuery($xml, './samlp:SessionIndex');
 		if (!empty($sessionIndex)) {
-			$this->sessionIndex = $sessionIndex[0]->textContent;
+			$this->sessionIndex = trim($sessionIndex[0]->textContent);
 		}
 	}
 
diff --git a/lib/SAML2/Message.php b/lib/SAML2/Message.php
index 735b9ac65acbd8226b84875767cd3f697fff0932..b135eca87cdd041a8726da515b69269c9d2e3d4f 100644
--- a/lib/SAML2/Message.php
+++ b/lib/SAML2/Message.php
@@ -142,7 +142,7 @@ abstract class SAML2_Message implements SAML2_SignedElement {
 
 		$issuer = SAML2_Utils::xpQuery($xml, './saml:Issuer');
 		if (!empty($issuer)) {
-			$this->issuer = $issuer[0]->textContent;
+			$this->issuer = trim($issuer[0]->textContent);
 		}
 
 
diff --git a/lib/SAML2/StatusResponse.php b/lib/SAML2/StatusResponse.php
index 8093da30cb804b0ad8e957b449ecd30a0c18f004..cb742213690c86b85fd193d8bdf8e8ed37f1e540 100644
--- a/lib/SAML2/StatusResponse.php
+++ b/lib/SAML2/StatusResponse.php
@@ -83,7 +83,7 @@ abstract class SAML2_StatusResponse extends SAML2_Message {
 
 		$message = SAML2_Utils::xpQuery($status, './samlp:StatusMessage');
 		if (!empty($message)) {
-			$this->status['Message'] = $message[0]->textContent;
+			$this->status['Message'] = trim($message[0]->textContent);
 		}
 	}
 
diff --git a/lib/SAML2/Utils.php b/lib/SAML2/Utils.php
index 84bfa347b4dad42992f30f2bfaebefa2b7ae7ab8..f62a060527297bdc7a6fab7604f982fd866e591c 100644
--- a/lib/SAML2/Utils.php
+++ b/lib/SAML2/Utils.php
@@ -68,7 +68,7 @@ class SAML2_Utils {
 		/* Now we extract all available X509 certificates in the signature element. */
 		$certificates = array();
 		foreach (self::xpQuery($signatureElement, './ds:KeyInfo/ds:X509Data/ds:X509Certificate') as $certNode) {
-			$certData = $certNode->textContent;
+			$certData = trim($certNode->textContent);
 			$certData = str_replace(array("\r", "\n", "\t", ' '), '', $certData);
 			$certificates[] = $certData;
 		}
@@ -198,7 +198,7 @@ class SAML2_Utils {
 	 */
 	public static function parseNameId(DOMElement $xml) {
 
-		$ret = array('Value' => $xml->textContent);
+		$ret = array('Value' => trim($xml->textContent));
 
 		foreach (array('NameQualifier', 'SPNameQualifier', 'Format') as $attr) {
 			if ($xml->hasAttribute($attr)) {