improved xml_convert() of XML helper
diff --git a/system/helpers/xml_helper.php b/system/helpers/xml_helper.php
index 712f677..09b7aee 100644
--- a/system/helpers/xml_helper.php
+++ b/system/helpers/xml_helper.php
@@ -36,25 +36,33 @@
  */	
 if ( ! function_exists('xml_convert'))
 {
-	function xml_convert($str)
+	function xml_convert($str, $protect_all = FALSE)
 	{
 		$temp = '__TEMP_AMPERSANDS__';
 
 		// Replace entities to temporary markers so that 
-		// ampersands won't get messed up
+		// ampersands won't get messed up	
 		$str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);
-		$str = preg_replace("/&(\w+);/",  "$temp\\1;", $str);
+	
+		if ($protect_all === TRUE)
+		{
+			$str = preg_replace("/&(\w+);/",  "$temp\\1;", $str);
+		}
 	
 		$str = str_replace(array("&","<",">","\"", "'", "-"),
-						   array("&amp;", "&lt;", "&gt;", "&quot;", "&#39;", "&#45;"),
-						   $str);
+							array("&amp;", "&lt;", "&gt;", "&quot;", "&apos;", "&#45;"),
+							$str);
 
 		// Decode the temp markers back to entities		
 		$str = preg_replace("/$temp(\d+);/","&#\\1;",$str);
-		$str = preg_replace("/$temp(\w+);/","&\\1;", $str);
-		
+	
+		if ($protect_all === TRUE)
+		{
+			$str = preg_replace("/$temp(\w+);/","&\\1;", $str);
+		}
+	
 		return $str;
-	}
+	}	
 }