Index: maven-changes-plugin/pom.xml
===================================================================
--- maven-changes-plugin/pom.xml	(revision 500792)
+++ maven-changes-plugin/pom.xml	(working copy)
@@ -136,6 +136,11 @@
       <version>2.0.4</version>
     </dependency>
     <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.1</version>
+    </dependency>
+    <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
       <version>1.1</version>
Index: src/main/java/org/apache/maven/plugin/changes/ChangesXML.java
===================================================================
--- src/main/java/org/apache/maven/plugin/changes/ChangesXML.java	(revision 500792)
+++ src/main/java/org/apache/maven/plugin/changes/ChangesXML.java	(working copy)
@@ -23,6 +23,7 @@
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.plugin.logging.Log;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -42,10 +43,8 @@
 
     private Release release;
 
-    private String currentElement;
+    private StringBuffer currentElement = new StringBuffer();
 
-    private String currentName;
-
     private List releaseList;
 
     private String author;
@@ -115,26 +114,28 @@
     {
         String s = new String( buf, offset, len );
 
-        if ( !s.trim().equals( "" ) )
+        if ( StringUtils.isNotEmpty(s) )
         {
-            currentElement = currentElement + s.trim() + "\n";
+            currentElement.append(s.replace('\n', ' '));
         }
     }
 
     public void endElement( String namespaceURI, String sName, String qName )
         throws SAXException
     {
+        boolean resetCurrentElement = true;
+
         if ( qName.equals( "title" ) )
         {
-            this.title = currentElement;
+            this.title = currentElement.toString();
         }
         else if ( qName.equals( "author" ) )
         {
-            this.title = currentElement;
+            this.title = currentElement.toString();
         }
         else if ( qName.equals( "action" ) )
         {
-            action.setAction( currentElement.trim() );
+            action.setAction( currentElement.toString().trim() );
 
             actionList.add( action );
         }
@@ -144,8 +145,16 @@
 
             releaseList.add( release );
         }
+        else
+        { // Some XML sneaked into a text...
+            resetCurrentElement = false;
+            currentElement.append("</").append(qName).append(">");
+        }
 
-        currentElement = "";
+        if (resetCurrentElement)
+        {
+            currentElement = new StringBuffer();
+        }
     }
 
     public void startElement( String namespaceURI, String sName, String qName, Attributes attrs )
@@ -191,7 +200,9 @@
 
             action.setIssue( attrs.getValue( "issue" ) );
         }
-
-        currentName = qName;
+        else
+        { // Some XML sneaked into a text...
+            currentElement.append("<").append(qName).append(">");
+        }
     }
 }
