Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как убрать пробелы и перевод строки в XStreам 
:(
    Опции темы
isabsent
Дата 30.5.2010, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Нужно передать объект сервлету по Http. Пытаюсь разобраться как это сделать с помощью XStream. Использую метод .toXML. На выходе получаю XML-строку типа
<list>
   <int>0</int>
   <int>1</int>
   <int>2</int>
</list>
-то есть с пробелами и переводами строки. Передать её сервлету через URL не удаётся - ошибка MalformedURL. Нужно избавиться от пробелов и перевода строк. То есть получить строку <list><int>0</int><int>1</int><int>2</int></list> 
Что нужно сказать Xstream'у чтобы оно сериализовал всё в одну строку?
PM MAIL   Вверх
pathfinder
Дата 30.5.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.3.2010

Репутация: 1
Всего: 10



Код

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.HierarchicalStreamDriver;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer;
import com.thoughtworks.xstream.io.xml.XppDriver;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;

public class XStreamTest {

    public static class HSD implements HierarchicalStreamDriver {

        public HSD() {
            this(new XppDriver());
        }

        public HSD(HierarchicalStreamDriver hsd) {
            if (hsd == null) {
                throw new NullPointerException("" +
                        "HierarchicalStreamDriver must be set");
            }
            this.hsd = hsd;
            xmlFriendlyReplacer = new XmlFriendlyReplacer();
        }

        @Override
        public HierarchicalStreamWriter createWriter(Writer out) {
            return new PrettyPrintWriterAdapter(out, xmlFriendlyReplacer);
        }

        @Override
        public HierarchicalStreamWriter createWriter(OutputStream out) {
            return createWriter(new OutputStreamWriter(out));
        }

        @Override
        public HierarchicalStreamReader createReader(Reader reader) {
            return hsd.createReader(reader);
        }

        @Override
        public HierarchicalStreamReader createReader(InputStream in) {
            return hsd.createReader(in);
        }

        /* DATA */
        HierarchicalStreamDriver hsd;
        XmlFriendlyReplacer xmlFriendlyReplacer;

    }

    public static class PrettyPrintWriterAdapter extends PrettyPrintWriter {

        public PrettyPrintWriterAdapter(Writer writer, XmlFriendlyReplacer replacer) {
            super(writer, replacer);
        }

        @Override
        protected void endOfLine() {
            // nothing ...
        }

    }
    
    /* *** Проверяем работу *** */
    public static void main(String[] args) {
        //HSD hsd = new HSD();
        HSD hsd = new HSD(new DomDriver());
        XStream xstream = new XStream(hsd);

        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        
        String xml = xstream.toXML(list);
        System.out.println(xml);
        System.out.println(xstream.fromXML(xml));
    }

}

PM MAIL   Вверх
isabsent
Дата 30.5.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Спасибо! Жесть какая... Я вижу вы в теме - не проясните один момент? Мне это нужно для передачи параметров через GET. Я думал что одна из целей создания этого пакета (XStream) и была облегчить формирование строки для вставки в HTTP-протокол. Но судя по приведённому вами коду  - это не так... Я в принципе могу обойтись и посредством       
 
 string_1 = xs.toXML(MyArrayList);
 string_2=string_1.replaceAll("\n", "");
 string_3=string_2.replaceAll("\\s", "");

но это как-то топорно выглядит... Кажется что я изобретаю велосипед. Чем положено пользоваться для формирования строки HTTP в Java?

Это сообщение отредактировал(а) isabsent - 30.5.2010, 16:01
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0816 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.