Index: /CKEditor/trunk/_source/core/xml.js
===================================================================
--- /CKEditor/trunk/_source/core/xml.js	(revision 3560)
+++ /CKEditor/trunk/_source/core/xml.js	(revision 3561)
@@ -25,6 +25,7 @@
 	else
 	{
+		var data = ( xmlObjectOrData || '' ).replace( /&nbsp;/g, '\xA0' );
 		if ( window.DOMParser )
-			baseXml = (new DOMParser()).parseFromString( xmlObjectOrData || '', 'text/xml' );
+			baseXml = (new DOMParser()).parseFromString( data, 'text/xml' );
 		else if ( window.ActiveXObject )
 		{
@@ -40,5 +41,5 @@
 				baseXml.resolveExternals = false;
 				baseXml.validateOnParse = false;
-				baseXml.loadXML( (xmlObjectOrData || '').replace(/&nbsp;/g, '\xA0') );
+				baseXml.loadXML( data );
 			}
 		}
Index: /CKEditor/trunk/_source/tests/core/ajax.html
===================================================================
--- /CKEditor/trunk/_source/tests/core/ajax.html	(revision 3560)
+++ /CKEditor/trunk/_source/tests/core/ajax.html	(revision 3561)
@@ -138,4 +138,20 @@
 		},
 
+		test_parseXml : function()
+		{
+			var data = new CKEDITOR.xml( '<?xml version="1.0" encoding="utf-8" ?><list><item id="test1" /><item id="test2" /></list>' );
+			assert.isInstanceOf( CKEDITOR.xml, data );
+			assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
+			assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
+		},
+
+		test_parseXml_nbsp : function()
+		{
+			var data = new CKEDITOR.xml( '<?xml version="1.0" encoding="utf-8" ?><list><item id="test1">&nbsp;</item><item id="test2" /></list>' );
+			assert.isInstanceOf( CKEDITOR.xml, data );
+			assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
+			assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
+		},
+
 		name : document.title
 	};
