Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Error web services: An invalid XML character


Автор: AlexNV 29.3.2010, 16:15
Требуется воспользоваться механизмом xslt (transformation rule) для web services 
на сервере приложений Glassfish 2.1.1.
Сообщение в UTF-8 кодировке при наличии символов кириллицы,

Код

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<getList xmlns="http://ws.test.com/">
<parameters>
<userid xmlns="">645</userid>
<filter xmlns="">
<filterItem>
<expression>4</expression>
<fieldName>firstname</fieldName>
<value><string>ТЕСТ</string></value>
</filterItem>
</filter>
<sorting xmlns="">
<sortingItem>
<fieldName>firstname</fieldName>
<sortOrder>true</sortOrder>
</sortingItem>
</sorting>
<returnRecordCount xmlns="">0</returnRecordCount>
</parameters>
</getList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


xml парсер (com.sun.xml.stream.XMLReaderImpl) выдает сообщение:
Код

com.sun.xml.stream.XMLStreamException2: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
        at com.sun.xml.stream.XMLReaderImpl.next(XMLReaderImpl.java:582)


сам класс (XMLReaderImpl) находится в webservices-rt.jar
часть manifest.mf:
Код

Implementation-Title: Web Services Interoperable Technologies
Implementation-Version: 1.0
Implementation-Vendor: Sun Microsystems, Inc.
Implementation-Vendor-Id: com.sun
Build-Id: 08/19/2009 12:04 PM(java_re)
Build-Version: WSIT-Runtime 1.1.7-08/19/2009 12:04 PM(java_re)-FCS
Major-Version: 1.1.
7

Если зарегистрировать на сервере Saxon 9.1 (net.sf.saxon.TransformerFactoryImpl), то сообщение изменится на:
Код

SXXP0003: Error reported by XML parser: An invalid XML character (Unicode: 0x15) was found in the element content of the document.|#]


При поиске в dump'e сообщения hex редактором символов с кодами (0x15) - нет.
При отсутствии символов кириллицы, xslt transformation rule, работает правильно.
Web service без использования xslt получает сообщения правильно.
Как использовать символы кириллицы в сообщении?

Автор: XupyprMV 30.3.2010, 11:59
Единственный раз когда встречался с подобной ошибкой - когда редактировал xml файл ()не помню точно в какой программе), после  чего в начало файла добавлялся некий символ (который был невидим если смотреть из той же программы). При попытке парсинга подобной xml выдавалась ошибка аналогичная вашей.

Автор: AlexNV 30.3.2010, 16:18
Цитата(XupyprMV @ 30.3.2010,  11:59)
некий символ (который был невидим если смотреть из той же программы)

Я думаю, что если в HEX редактор не показывает код символа, то этого символа нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)