我有一个将对象序列化为字符串的方法,展示一个:
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