Почему XMLEventReader / XMLEventWriter неожиданно меняет вкладку на пробел в выводе? - PullRequest
0 голосов
/ 24 октября 2019

Я использую XMLEventReader для чтения содержимого XML с вкладкой внутри, позже я использую XMLEventWriter для записи их обратно в другой файл. Тем не менее, 3 вкладки в исходном вводе были изменены на 3 пробела в моем выводе. Почему это происходит? Возможно ли, что они сохранятся в новом файле?

Пожалуйста, посмотрите, что этот фрагмент кода для отображения 3 вкладки заменен на 3 пробела:

    public static void testXMLStreamWriter() {
        try {
            final XMLEventFactory xmlEventFactory = XMLEventFactory.newInstance();
            XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
            XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
            XMLEventWriter xmlEventWriter = xmlOutputFactory.createXMLEventWriter(System.out);

            // here the input contians 3 tabs
            String xmlStr = "<tag>\n" + "<formatter pattern=\"abc           xyz\"/>\n" + "</tag>";

            XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new StreamSource(new StringReader(xmlStr)));

            // adds the event to the consumer.
            xmlEventWriter.add(xmlEventReader);
            xmlEventWriter.flush();
            xmlEventWriter.close();

            // expected success
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Я ожидал увидеть 3 вкладки вмой вывод как:

<?xml version="1.0" standalone="no"?><tag>
<formatter pattern="abc         xyz"></formatter>
</tag>

Но я получил

<?xml version="1.0" standalone="no"?><tag>
<formatter pattern="abc   xyz"></formatter>
</tag>
...