Прочитайте текст из InputStream [дубликат]

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

XSLT казался отличным выбором для этого перевода из старого формата-> Новый формат. В течение двух недель у меня было рабочее преобразование от старого до нового для наших сотен страниц. Я также смог использовать его для извлечения большой информации о расположении наших страниц UI. Я создал списки, из которых были встроены компоненты, в котором, относительно легко который я тогда использовал XSLT для записи в наши определения схемы.

кроме того, происходя из среды C++, это был очень забавный и интересный язык ведущему устройству.

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

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

31
задан jthg 11 December 2009 в 23:47
поделиться

4 ответа

В зависимости от того, какие лицензии вам подходят, это однострочный с библиотекой ввода-вывода Jakarta-Commons.

20
ответ дан 27 November 2019 в 22:42
поделиться

Укажите кодировку символов. Не тратьте впустую код, не вводите ошибки и не замедляйте выполнение с помощью BufferedReader .

Вот пример. Вы можете параметризовать его размером буфера, кодировкой и т. Д.

static String readString(InputStream is) throws IOException {
  char[] buf = new char[2048];
  Reader r = new InputStreamReader(is, "UTF-8");
  StringBuilder s = new StringBuilder();
  while (true) {
    int n = r.read(buf);
    if (n < 0)
      break;
    s.append(buf, 0, n);
  }
  return s.toString();
}
10
ответ дан 27 November 2019 в 22:42
поделиться

Чтение / запись из потоков в Java чрезвычайно болезненны.

public static String getStreamContents(InputStream stream) throws IOException {

    StringBuilder content = new StringBuilder()

    Reader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"))
    String lineSeparator = System.getProperty("line.separator");

    try {
        String line
        while ((line = reader.readLine()) != null) {
            content.append(line + lineSeparator)
        }
        return content.toString()

    } finally {
        reader.close()
    }

}
1
ответ дан 27 November 2019 в 22:42
поделиться

Using Commons-IO is likely to be the best option. For your interest, another approach is to copy all the bytes and then convert it into a String.

public static String readText(InputStream is, String charset) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] bytes = new byte[4096];
    for(int len;(len = is.read(bytes))>0;)
        baos.write(bytes, 0, len);
    return new String(baos.toByteArray(), charset);
}
1
ответ дан 27 November 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: