2016-04-13 28 views
0

私はこのエラーが発生します:''、16進値0x19は無効な文字ですか?

' ', hexadecimal value 0x19, is an invalid character

戻っ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. 

私も正規表現式を使用して、無効な文字を削除しようとしましたが、テーブルには、W3C XML RecommendationパーXMLにこれらcharacters are legal in XML

+0

a)あなたはどの言語で作業していますか?b)XMLはどのように生成されていますか?そのキャラクターを探し始める場所になります。 – Tim

+0

私はあなたの答えに私の質問を編集しました –

+0

私はこのエラーがDataTableのデータによるものだと思います。テーブルが大きすぎない場合は、それをチェックして問題のキャラクタが見つかるかどうかを確認することができます。この種の問題は、IMEを実行するのが難しい場合があります。 – Tim

答えて

0

を読み取ろうとするとき、私はまだエラーが発生します:

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

0x19はunicode END OF MEDIUMであり、許可されたセットではありません。

関連する問題