オブジェクトを文字列にシリアル化するメソッドがあり、次を示します。
Shared Function Serialize(ByVal o As Object) As String
Dim rtnVal As String = ""
Dim x As New System.Xml.Serialization.XmlSerializer(o.GetType())
Using memStream As New MemoryStream
Dim stWriter As New System.IO.StreamWriter(memStream)
x.Serialize(stWriter, o)
rtnVal = Encoding.UTF8.GetString(memStream.GetBuffer())
End Using
Return rtnVal
End Function
このシリアル化されたデータを使用して、SQL 2012 データベースの XML 型付きフィールドに挿入しています。ほとんどの場合、このコードは非常にうまく機能しますが、特定のオブジェクトに対して「無効な」文字、つまり「行 5 文字 17 の不正な xml 文字を解析しています」というエラーが発生します。ここでわかるように、データを確認しましたが、クリーンです。
<?xml version="1.0" encoding="utf-8"?>
<RatingDetails xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LenderName>dsfg</LenderName>
<VehiclePrice>345</VehiclePrice>
</RatingDetails>
いくつかのスヌーピングにより、IsXMLChar メソッドを実行するようになりました - http://msdn.microsoft.com/en-us/library/system.xml.xmlconvert.isxmlchar%28v=vs.100%29.aspx - そしてこれを使用してシリアル化された XML 文字列の各文字をループします。低いと見よ、私は無効なデータを持っています. 文字列の最後に 15 個の "" 文字があります - WTF!?!
皆さんへの私の質問は、一体どこから余分な "" が来ているのか、クイック ウォッチで文字列を調べたときにそれらが見えないのはなぜなのか、そもそもそれらを防ぐにはどうすればよいのかということです。
あなたの ASP.NET、ewitkows