【问题标题】:' ', hexadecimal value 0x19, is an invalid character?' ',十六进制值 0x19,是无效字符吗?
【发布时间】:2016-08-05 03:42:28
【问题描述】:

我收到此错误:

'',十六进制值0x19,是无效字符

当将 DataTable 序列化为 XML 时,然后将此 XML 反序列化回 DataTable

这已经工作了几个月了,知道这个字符现在是如何突然进入相关 XML 的吗?

在 VB.NET 中工作。这是完成工作的代码。

Public Function ConvertDataTableToXML(ByVal tbl As DataTable) As String
    tbl.TableName = "gv"
    Dim writer As New System.IO.StringWriter()
    tbl.WriteXml(writer, XmlWriteMode.WriteSchema, False)
    Return writer.ToString()
End Function

Public Function ConvertXMLToDataTable(ByVal xml As String) As DataTable
    Dim tbl As New DataTable
    Dim xmlReader As XmlReader = xmlReader.Create(New StringReader(xml))
    tbl.ReadXml(xmlReader)
    Return tbl
End Function 'This function throws the error.

我也尝试使用正则表达式去除无效字符,但当表尝试读取 XML 时我仍然收到错误

【问题讨论】:

  • a) 您使用什么语言。b) XML 是如何生成的?那将是开始寻找角色的地方。
  • 我已经编辑了我的问题来回答你的问题
  • 我预计错误是由于 DataTable 中的数据造成的。如果桌子不是太大,你可以检查一下,看看你是否能找到有问题的角色。这类问题很难在 IME 中运行。
  • 这是一个负号,它不是一个有效的 xml 字符。请参阅:google.com/…

标签: xml vb.net serialization datatable


【解决方案1】:

根据W3C XML Recommendation,这些characters are legal in XML

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

0x19 是 unicode END OF MEDIUM,不在允许集中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2016-11-14
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 2013-07-30
    相关资源
    最近更新 更多