SAXParseException: тип элемента SOAP: за текстом должны следовать либо спецификации атрибутов, ">" или "/>" - PullRequest
0 голосов
/ 09 ноября 2010

Я пытаюсь прочитать ответ на вызов веб-службы в тесте junit, запущенном в Eclipse Galileo.Я могу успешно получать ответы, кроме случаев, когда ответ является ошибкой SOAP.Затем я получаю следующее исключение: org.xml.sax.SAXParseException: тип элемента "SOAP: Text" должен сопровождаться спецификациями атрибутов, ">" или "/>"

Я проверил XML в LiquidXML Studio на соответствие схеме SOAP 1.2, и он проверил.

Вот ответ XML, который, кажется, задыхается от SAX.Он был сведен к минимуму в попытке устранить что-либо очевидное (я даже убедился, что в нем нет самозакрывающихся элементов):

<SOAP:Envelope xmlns:SOAP="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP_ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP:Header> </SOAP:Header> <SOAP:Body> <SOAP:Fault> <SOAP:Code> <SOAP:Value>SOAP:Sender</SOAP:Value> <SOAP:Subcode> <SOAP:Value>SOAP:Sender</SOAP:Value> </SOAP:Subcode> </SOAP:Code> <SOAP:Reason> <SOAP:Text xml:lang=""> </SOAP:Text> </SOAP:Reason> <SOAP:Node> </SOAP:Node> <SOAP:Role> </SOAP:Role> <SOAP:Detail> </SOAP:Detail> </SOAP:Fault> </SOAP:Body> </SOAP:Envelope>

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 09 ноября 2010

Я думаю, что проблема в том, чтобы сопоставить ошибку мыла xml с соответствующим объектом.

0 голосов
/ 12 ноября 2010

Оказывается, проблема связана с инструментом, который я использовал для возврата статических строковых ответов на запросы веб-служб.Статический ответ XML содержал атрибут xml: lang.Однако, когда инструмент возвращал статическую строку, он изменял ее на выходе и заменял xml: lang на лету полностью определенным эквивалентом пространства имен {http://www.w3.org/XML/1998/namespace}lang. Когда этот ответ был получен, SAXParser задыхался, потому чтоон не может интерпретировать полностью определенный эквивалент.

Инструмент, возвращающий статические ответы, использовал анализатор Groovy xml в качестве неотъемлемой части отправки ответа.В классе XmlParser Groovy есть конструктор, который мне пришлось изменить, чтобы установить для атрибутов validation и namespaceAware значение false.Поэтому вместо XmlParser () инструмент теперь вызывает XmlParser (false, false).Задача решена.Спасибо за ответы.

0 голосов
/ 09 ноября 2010

Очевидно, что атрибут xml: lang = "" 'не распознается.Проверьте с помощью xsd или xmlSchema, какие атрибуты действительны.Также вы должны использовать

xml:lang=&quot;&quot;

вместо "", хотя большинство парсеров прощают вас за это.

...