The quest for 0x0B

后端 未结 3 780
遇见更好的自我
遇见更好的自我 2020-12-21 07:27

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

相关标签:
3条回答
  • 2020-12-21 08:07

    Have you tried nchar(0x0B) instead of char(0x0B) yet? As it sounds like your dodgy character is Unicode.

    0 讨论(0)
  • 2020-12-21 08:08

    Character 0x0B cannot be used in an XML document (see the list of valid XML characters here.) Please consider migrating invalid XML characters like this to valid XML (e.g. the sequence ).

    0 讨论(0)
  • 2020-12-21 08:20

    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 &#xB to find the un-escaped 0x0B ... seriously not funny guys!

    So this:

      SELECT * from Mytable where Column like '%' + '&#xB' + '%'
    

    Will actually find this:

    <?xml version="1.0"?>
          <Hashtable><key>313_other_10</key><value>&#xB</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!

    0 讨论(0)
提交回复
热议问题