Я использую парсер STAX для генерации XML. Вот что мне нужно создать:
<?xml version = "1.0"?>
<!DOCTYPE FILE PUBLIC "-//SOMETHING//DTD bla bla bla//EN" "scheme.dtd"
[
<!ENTITY file1 SYSTEM "D:\repo\file1.pdf" NDATA application_pdf>
]
>
<FILES>
<FILE>
<METADATA></METADATA>
<CONTENT></CONTENT>
..... and so on .....
Проблема в том, что я не знаю, как объявить теги DOCTYPE и ENTITY. Пытался пойти в Google и не нашел никаких решений. Пожалуйста помоги.
Для этого в классе XMLStreamWriter существует метод: writeDTD. Просто передайте всю блонду DOCTYPE.
Я нашел решение. Я отключил символы, сбрасываемые на фабрике:
XMLOutputFactory factory = XMLOutputFactory.newInstance();
factory.setProperty("escapeCharacters", false);
И написал DOCTYPE и ENTITY, используя метод writeCharacters:
writer.writeCharacters("doctype bla bla");