Как сохранить пробел перед элементом документа при парсинге с Java?

Если ваши данные действительно упорядочены по возрастанию, когда вы их показываете, тогда проще использовать поле идентификатора суррогатного ключа.

SELECT packages_sent
 FROM packages 
WHERE ID = 
  (SELECT max(ID)
    FROM packages
    WHERE date <= '2017-05-29');

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

8
задан Jens Bannmann 15 May 2009 в 14:08
поделиться

5 ответов

Основная причина заключается в том, что стандартный DOM уровня 3 не может представлять текстовые узлы как дочерние по отношению к документу без нарушения спецификации. Пробелы будут удалены любым совместимым анализатором.

Document -- 
    Element (maximum of one),
    ProcessingInstruction,
    Comment,
    DocumentType (maximum of one)

Если вам требуется совместимое со стандартами решение и цель - удобочитаемость, а не 100% воспроизведение, я бы поищу его в вашем механизме вывода.

3
ответ дан 5 December 2019 в 13:01
поделиться

У меня была та же проблема. Мое решение заключалось в том, чтобы написать собственный XML-анализатор: DecentXML

Основная особенность: он может на 100% сохранять исходный ввод, пробелы, сущности, все. Детали вас не побеспокоят,

6
ответ дан 5 December 2019 в 13:01
поделиться

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

1
ответ дан 5 December 2019 в 13:01
поделиться

Почему вы хотите избежать этого?

Пробел вне тегов / элементов определяется спецификацией как несущественный. Его просто не существует, что касается информационного набора, который представлен вашей DOM.

Следовательно, после сериализации DOM снова, его там не будет.

Если вы находитесь в процессе разработки чего-то, что полагается на эту пустую строку ... Не надо.

3
ответ дан 5 December 2019 в 13:01
поделиться

Я согласен с Крисом и Томалаком, пустая строка не имеет значения с точки зрения XML. Если ваше приложение должно выдавать пустую строку в выводе, я бы посоветовал проверить необходимость этого требования.

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

0
ответ дан 5 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

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