Кодировать строку XML в EXI и отправить ее через веб-сокет
Прежде всего, я использую архитектуру клиент-сервер, android для клиента и node.js для сервера, они подключены через библиотеку Socket.io, поэтому они используют веб-сокеты.
У меня есть сомнения в том, что я генерирую XML-строку с XMLSerializer из Java, я хочу закодировать ее в EXI и отправить на сервер, таким образом, возможно ли выполнить кодирование XML-EXI без использования файлов? прямо из строки в строку? потому что все примеры, которые я вижу, предполагают, что мой XML находится в файле, и я хочу вывод в другой файл. Еще одно сомнение, я могу просто отправить EXI в виде строки? потому что я уже установил связь между клиентом и сервером, но они просто отправляют строки, я не уверен, что смогу ли я отправить целые файлы, в таком случае, будет ли какое-либо различие в количестве отправленных данных?
1 ответ
Наконец, я решил это, для людей с той же проблемой, решение:
String input = methodGivingXMLString();
byte inputBytes[] = input.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(inputBytes);
transmogrifier.encode(new InputSource(in));
Для ввода и для вывода:
ByteArrayOutputStream result = new ByteArrayOutputStream();
transmogrifier.setOutputStream(result);
примечание 1: я использую библиотеку OpenExi
примечание 2: выходной поток должен быть установлен перед вызовом метода encode().