拥有一个使用SOAP在webservice上发布XML数据的应用程序。
数据直接从Oracle数据库中提取并解析为XML但由于某种原因,从数据库中提取的数据会导致以下无效的XML异常。
做了一些研究,看起来它可能是XML解析器不喜欢的数据中某处的NULL字符。
只是想知道是否有人以前见过这个,如果有的话他们能够在应用程序或数据库层修复它吗?
谢谢!
这是堆栈跟踪......
异常System.Xml.XmlException:'。',十六进制值0x00,是无效字符。第1行,位置79763。 在System.Xml.XmlTextReaderImpl.Throw(例外e) 在System.Xml.XmlTextReaderImpl.Throw(String res,String [] args) 在System.Xml.XmlTextReaderImpl.Throw(Int32 pos,String res,String [] args) 在System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Int32 pos,Char invChar) 在System.Xml.XmlTextReaderImpl.ParseNumericCharRefInline(Int32 startPos,Boolean expand,BufferBuilder internalSubsetBuilder,Int32& charCount,EntityType& entityType) 在System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos,Int32& endPos,Int32& outOrChars) 在System.Xml.XmlTextReaderImpl.ParseText() 在System.Xml.XmlTextReaderImpl.ParseElementContent() 在System.Xml.XmlTextReaderImpl.Read() 在System.Xml.XmlTextReader.Read() 在System.Xml.XmlValidatingReaderImpl.Read() 在System.Xml.XmlValidatingReader.Read() 在System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace) 在System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc) 在System.Xml.XmlLoader.Load(XmlDocument doc,XmlReader reader,Boolean preserveWhitespace) 在System.Xml.XmlDocument.Load(XmlReader阅读器) 在Microsoft.Web.Services2.Security.MessageSignature.PreProcessElementInput(XmlElement elem) 在Microsoft.Web.Services2.Security.SignatureReference.CalculateHashValue(XmlDocument文档,CanonicalXmlNodeList refList) 在Microsoft.Web.Services2.Security.MessageSignature.BuildDigestedReferences() at Microsoft.Web.Services2.Security.MessageSignature.ComputeKeyedHashSignature(SymmetricKeyAlgorithm key) 在Microsoft.Web.Services2.Security.MessageSignature.ComputeSignature() 在Microsoft.Web.Services2.Security.Security.SerializeXml(SoapEnvelope文档) 在Microsoft.Web.Services2.Security.SecurityOutputFilter.ProcessHeader(安全性,SoapEnvelope信封) 在Microsoft.Web.Services2.Security.SecurityOutputFilter.ProcessMessage(SoapEnvelope信封) 在Microsoft.Web.Services2.Pipeline.ProcessOutputMessage(SoapEnvelope信封) 在Microsoft.Web.Services2.OutputStream.Close() 在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object []参数)
更新:这是一个正在发布的数据选择。基本上只是纯文本,这是它在数据库列中的存在方式,包括为逗号分隔。
614494,2003,33,327,15961,59652,2,2,3,2,1,10-Dec-08,MY2003 AERO SEDAN,Manual 2.0
答案 0 :(得分:0)
您从Oracle中提取了哪些数据?一个博客?图像斑点?
我问的原因是图片有标题,这意味着标题后面会有一个空字符。但是,不知道如何转义null char以使其对序列化有效,但是您可以执行类似base64对图像进行编码的操作,这将使另一端的base64转换成为反转。
除此之外,您应该发布从Oracle提取的确切数据,因为这可能有助于更具体的答案。