내가 문자열로 객체를 직렬화하는 방법을 가지고하는 전시 :이 직렬화 된 데이터를 사용하여XmlSerializer를 추가하는 추가 문자
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에서
너의,
을 어디 당신은'Encoding' 객체를 인스턴스화합니까? 그 코드를 게시하십시오. –
@KarlAnderson에게 감사드립니다. 아뇨, 전혀 그 코드를 인스턴스화하지 않습니다. – ewitkows
@KarlAnderson, 인코딩은 클래스 이름 (예 :'System.Text.Encoding')입니다. 'UTF8'은 클래스의 공유 속성이므로 인스턴스화를 사용하지 않아도됩니다. –