I get this error when reading some data from an SQL column then converting it to XML:
"System.InvalidOperationException: There is an error in XML document (182, 16). ---> System.Xml.XmlException: ' ', hexadecimal value 0x0B, is an invalid character."
Fair enough, maybe the data is malformed. Except, how can I find the culprit row?
SELECT * from Mytable where Column like '%' + char(0x0B)+'%'
returns empty.
(obviously I attempted all %+char , char, char+% combinations, just in case)
Finally found it !
The .NET XML serializer was escaping the invalid character when serializing it, but then it was un-escaping it before de-serialization.
So I had to search for the escaped  to find the un-escaped 0x0B ... seriously not funny guys!
So this:
SELECT * from Mytable where Column like '%' + '' + '%'
Will actually find this:
<?xml version="1.0"?>
<Hashtable><key>313_other_10</key><value></value></Hashtable>
And while this looks like valid XML it will throw an invalid character exception when :
XmlSerializer xs = new XmlSerializer(Type.GetType(Hashtable));
StringReader stringReader = new StringReader(xml);
obj = xs.Deserialize(stringReader);
Many thanks to people who jumped in to help! It was unvaluable help!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With