Есть приложение, которое публикует данные XML через веб-сервис с использованием SOAP.
Данные извлекаются непосредственно из базы данных Oracle и анализируются в XML, но по какой-то причине данные, извлекаемые из БД, вызывают следующее недопустимое исключение XML.
Мы провели небольшое исследование, и похоже, что где-то в данных это может быть символ NULL, который не нравится анализатору XML.
Просто интересно, видел ли кто-нибудь это раньше и могли ли это исправить на уровне приложения или базы данных?
Спасибо!
Вот трассировка стека ...
Исключение 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, логическое раскрытие, 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 (логическое skipOverWhitespace)
в System.Xml.XmlLoader.LoadDocSequence (XmlDocument parentDoc)
в System.Xml.XmlLoader.Load (документ XmlDocument, читатель XmlReader, логическое 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 ()
в Microsoft.Web.Services2.Security.MessageSignature.ComputeKeyedHashSignature (ключ SymmetricKeyAlgorithm)
в 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 декабря 2008 года, AERO SEDAN MY2003, руководство 2.0 * 1019