我有一个类,我们称它为,用户带有@XmlRootElement注释,带有一些属性(名称,姓氏等)。

我将此类用于REST操作,即application/xml

客户端将POST User类,所以我想将值保留在日志中。

jaxb中是否有任何方法将该对象打印为xml

例如:

log.info("Customers sent: "+user.whichMethod());

应该产生以下输出:
Customer sent:
<user> <name>cristi</name> <surname>kevin</surname> </user>

谢谢。

最佳答案

您可以将其作为端点可访问的通用方法。

public String toXml(JAXBElement element) {
    try {
        JAXBContext jc = JAXBContext.newInstance(element.getValue().getClass());
        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        marshaller.marshal(element, baos);
        return baos.toString();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}

10-08 13:43