dom4j - я хочу убрать пустые строки после обработки инструкций - PullRequest
0 голосов
/ 18 марта 2019

При разработке java-приложения, используя библиотеку dom4j, выполняется вывод xml.Я хочу добавить элемент инструкции обработки после объявления xml, а затем выписать обычный элемент.

Проблема

Я хочу исключить вставку пустых строк после элементов инструкций обработки.



        FileOutputStream fos = null;
        OutputFormat format = new OutputFormat("  ", true, "UTF-8");

        XMLWriter writer = null;
        try {
            Document newDoc = DocumentHelper.createDocument();

            Map<String, String> map = new LinkedHashMap<>();
            // Add attributes of processing instruction to map
            map.put("type", "text/xsl");
            map.put("href", "../../test/sample.xsl");

            // Generate processing instruction and add to dom
            ProcessingInstruction pi = DocumentHelper.createProcessingInstruction("xml-stylesheet", map);
            List<Node> headerList = newDoc.content();
            headerList.add(0, pi);

            // Add regular element to dom
            Element person= newDoc.addElement("person");
            person.addElement("name");

            // xml export
            fos = new FileOutputStream("C:\\demo\\demo.xml");
            writer = new XMLWriter(fos, format);
            writer.write(newDoc);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


demo.xml


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../../test/sample.xsl"?>
                     //?I want to delete this blank line
<person>
  <name/>
</person>

Попробуйте

Даже если для setNewLineAfterDeclaration OutputFormat задано значение false, это будет следующим образом, если пустая строка после объявления xmlудаляется.


<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="../../test/sample.xsl"?>
                     //?I want to delete this blank line
<person>
  <name/>
</person>

Кроме того, если setNewLineAfterDeclaration для OutputFormat имеет значение false и отсутствует обработка инструкций, не было пустой строки.


<?xml version="1.0" encoding="UTF-8"?>
<person>
  <name/>
</person>

Невозможно удалить пустые строки после обработкиинструкция?Спасибо за ваше внимание.,.

Дополнительная информация

dom4j версия: 2.1.1

...