diff --git a/Text/XML/Stream/Parse.hs b/Text/XML/Stream/Parse.hs
--- a/Text/XML/Stream/Parse.hs
+++ b/Text/XML/Stream/Parse.hs
@@ -300,10 +300,10 @@
 parseToken de = (char '<' >> parseLt) <|> TokenContent <$> parseContent de False False
   where
     parseLt =
-        parseBegin <|>
-        (char '/' >> parseEnd) <|>
+        (char '?' >> parseInstr) <|>
         (char '!' >> (parseComment <|> parseCdata <|> parseDoctype)) <|>
-        (char '?' >> parseInstr)
+        parseBegin <|>
+        (char '/' >> parseEnd)
     parseInstr = do
         name <- parseIdent
         if name == "xml"
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -84,6 +84,7 @@
         it "works" caseAttrReorder
     describe "ordering attributes explicitly" $ do
         it "works" caseOrderAttrs
+    it "parsing CDATA" caseParseCdata
 
 documentParseRender :: IO ()
 documentParseRender =
@@ -520,3 +521,13 @@
                     ])
                 []
     lbs @=? S.concat (L.toChunks $ Res.renderLBS rs doc)
+
+caseParseCdata :: Assertion
+caseParseCdata = do
+    let lbs = "<a><![CDATA[www.google.com]]></a>"
+        doc = Res.Document (Res.Prologue [] Nothing [])
+                (Res.Element "a" Map.empty
+                    [ Res.NodeContent "www.google.com"
+                    ])
+                []
+    Res.parseLBS_ def lbs @?= doc
diff --git a/xml-conduit.cabal b/xml-conduit.cabal
--- a/xml-conduit.cabal
+++ b/xml-conduit.cabal
@@ -1,5 +1,5 @@
 name:            xml-conduit
-version:         1.1.0.7
+version:         1.1.0.8
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michaels@suite-sol.com>, Aristid Breitkreuz <aristidb@googlemail.com>
