diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
 (!) Breaking change
 ```
 
+2.3.0.0 [2026-10-06]
+--------------------
+```
+(!) string(xml): Fix '\r' handling in Show instances
+(!) string(xml): Fix attribute value parser
+```
+
 2.2.0.0 [2026-09-30]
 --------------------
 ```
diff --git a/mini.cabal b/mini.cabal
--- a/mini.cabal
+++ b/mini.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               mini
-version:            2.2.0.0
+version:            2.3.0.0
 license:            MIT
 license-file:       LICENSE
 author:             Victor Wallsten <victor.wallsten@protonmail.com>
diff --git a/src/Mini/String/XML.hs b/src/Mini/String/XML.hs
--- a/src/Mini/String/XML.hs
+++ b/src/Mini/String/XML.hs
@@ -237,12 +237,13 @@
 newtype CData = CData String
   deriving (Eq, Ord)
 
--- | Encodes @<&@ into predefined entities
+-- | Encodes @<&@ and @\\r@ into predefined and decimal references respectively
 instance Show CData where
   show (CData cd) = concatMap enc cd
    where
     enc '&' = "&amp;"
     enc '<' = "&lt;"
+    enc '\r' = "&#13;"
     enc c = [c]
 
 instance Hashable CData where
@@ -264,13 +265,14 @@
     Value String
   deriving (Eq, Ord)
 
--- | Encodes @<&"@ into predefined entities
+-- | Encodes @<&"@ and @\\r@ into predefined and decimal references respectively
 instance Show Value where
   show (Value v) = concatMap enc v
    where
     enc '&' = "&amp;"
     enc '<' = "&lt;"
     enc '"' = "&quot;"
+    enc '\r' = "&#13;"
     enc c = [c]
 
 instance Hashable Value where
@@ -456,8 +458,8 @@
 value :: (Monad m) => ParserT Char m Value
 value =
   Value
-    <$> ( (doubleQuoted $ many (noneOf "<&\"" <|> decode))
-            <|> (singleQuoted $ many (noneOf "<&'" <|> decode))
+    <$> ( (doubleQuoted $ many (exclude "<&\"" <|> decode))
+            <|> (singleQuoted $ many (exclude "<&'" <|> decode))
         )
 
 cData :: (Monad m) => ParserT Char m CData
