Add XML comments into marshaled file

前端 未结 3 1678
太阳男子
太阳男子 2020-12-20 12:31

I\'m marshaling objects into an XML file. How can I add comments into that XML file?

3条回答
  •  隐瞒了意图╮
    2020-12-20 12:54

    I do not see a way to do it with JAXB alone. However, I think you can leverage DOM to get the desired effect:

    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    final DocumentBuilder builder = factory.newDocumentBuilder();
    final Document doc = builder.getDOMImplementation().createDocument(null, null, null);
    
    final Binder binder = jaxbContext.createBinder();
    binder.marshal(jaxbObject, doc);
    final Comment comment = doc.createComment("This is a comment");
    doc.appendChild(comment);
    
    final DOMSource domSource = new DOMSource(doc);
    // use System.out for testing
    final StreamResult streamResult = new StreamResult(System.out);
    final TransformerFactory tf = TransformerFactory.newInstance();
    final Transformer serializer = tf.newTransformer();
    serializer.transform(domSource, streamResult);
    

    Where jaxbContext is the JAXBContext object you are working with and jaxbObject is the object to be marshalled. This sample just appends the comment to the end of the document. For a different location, you would have to traverse the DOM through the doc object or use XPath to find the exact element you want the comment added to and use appendChild on it.

提交回复
热议问题