Использование XML 1.1 в Axis2 - PullRequest
3 голосов
/ 21 января 2009

У меня есть веб-сервис и клиент, которые передают строки, содержащие ссылки на символы, такие как (0x1A). Они недопустимы в XML 1.0, но действительны в XML 1.1. XML-анализатор Axis генерирует исключения из-за этих ссылок на символы. Есть ли способ заставить его проанализировать ответ как XML 1.1 или вставить объявление XML? (Там в настоящее время нет ни одного.) Я изучил использование обработчиков, но, насколько я понимаю, они вызываются после того, как XML уже проанализирован.

Ответы [ 3 ]

1 голос
/ 01 октября 2009

Вы передаете в InputStream или Reader? Если это так, вы можете заключить источник в другой класс (например, BufferedReader работает), но использовать его для удаления ненужных символов.

1 голос
/ 21 января 2009

Я думаю, вам будет очень тяжело с этим. Насколько я понимаю, стандарт WSDL 2.0 построен на XML 1.0. Итак, какую службу вы называете, которая описывает себя с помощью WSDL (при условии XML 1.0), а затем начинает отправлять вам сообщения с символами XML 1.1 в нем?

Когда вы определяете службу Axis2, вы можете определить, какие обработчики у нее есть в файле services.xml. Например, на этой странице у них есть служба, которая использует org.apache.axis2.receivers.RawXMLINOutMessageReceiver ... Я знаю, что это не то, что вы пытаетесь сделать, но, возможно, это место для начала смотреть или думать.

0 голосов
/ 20 марта 2018

Есть еще один вариант - заставить синтаксический анализатор обрабатывать ввод как XML 1.1. Поскольку Axis2 использует синтаксический анализатор Woodstox, вы можете расширить WstxInputFactory и переопределить метод createPrivateConfig():

@Override
public ReaderConfig createPrivateConfig() {
    ReaderConfig config = super.createPrivateConfig();
    config.enableXml11(true);
    return config;
}

Затем используйте эту пользовательскую фабрику через системное свойство: -Djavax.xml.stream.XMLInputFactory = mypackage.MyWstxInputFactory

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

...