如何在Java中使用StAX解析器在XML中声明DOCTYPE和ENTITY

如何在Java中使用StAX解析器在XML中声明DOCTYPE和ENTITY,java,xml,parsing,doctype,stax,Java,Xml,Parsing,Doctype,Stax,我正在使用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>

我正在使用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标记。试图用谷歌搜索,但没有找到任何解决方案。请帮忙。

我找到了解决办法。我禁用了在工厂中转义的字符:

XMLOutputFactory factory = XMLOutputFactory.newInstance();
factory.setProperty("escapeCharacters", false);
并使用writeCharacters方法写入DOCTYPE和实体:

writer.writeCharacters("doctype bla bla");

XMLStreamWriter类中有一个用于此的方法:。只需将整个DOCTYPE blob传递到那里