Java 向Jackson XML序列化添加独立指令

Java 向Jackson XML序列化添加独立指令,java,xml,jackson,jaxb,Java,Xml,Jackson,Jaxb,我试图让Jackson像JAXB一样生成XML头,但我不知道如何添加“standalone='yes'?” 例如: public class XmlTest { @XmlRootElement public static class Book { } @Test public void testBookXml() throws JsonProcessingException { XmlMapper mapper = new XmlMa

我试图让Jackson像JAXB一样生成XML头,但我不知道如何添加“standalone='yes'?”

例如:

public class XmlTest {

    @XmlRootElement
    public static class Book {

    }

    @Test
    public void testBookXml() throws JsonProcessingException {
        XmlMapper mapper = new XmlMapper();
        mapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);

        System.out.println("Jackson\n" + mapper.writeValueAsString(new Book()) + "\n");

        StringWriter sw = new StringWriter();
        JAXB.marshal(new Book(), sw);
        System.out.println("JAXB\n" + sw.toString());
    }
}
输出如下:

Jackson
<?xml version='1.0' encoding='UTF-8'?><Book/>

JAXB
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<book/>
Jackson
JAXB

我不在乎
vs
。除了字符串操作,还有什么方法可以让Jackson头像JAXB头一样吗?

我遇到了同样的问题,我通过重新加载类
BufferingXmlWriter
(从源代码复制并修改方法)解决了这个问题,在使用Jackson生成XML之前必须重新加载

  • 创建包com.ctc.wstx.sw并创建类
    BufferingXmlWriter
  • 从real
    com.ctc.wstx.sw.BufferingXmlWriter复制源代码
  • 修改方法
    writexml声明(字符串版本、字符串编码、字符串独立)
  • public void writexml声明(字符串版本、字符串编码、字符串独立)
    抛出IOException
    {
    //最终字符chQuote=(mUseDoubleQuotesInXmlDecl?“:”\”;
    最终字符chQuote=“”;
    
    fastWriteRaw(“您解决了这个问题吗?我最后只是对结果进行了字符串替换。无法使用JAXB.sad了解如何执行此操作,但请使用tnx进行回复
     Class.forName("com.ctc.wstx.sw.BufferingXmlWriter");
    
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>