2
私はjdk1.8でスプリングブートを使用しています。 jaxb xmlを使用してJava ObjectをXMLにマーシャリングできますが、XML出力にDOCTYPEを追加します。jaxb marshallerでDOCTYPEを追加する方法
現在のXML出力:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
私が欲しいものは次のとおりです。以下は
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Example SYSTEM "example.dtd">
私は再び実行したときに上記の私のJAXB
package com.example.demo.model;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.PropertyException;
import java.io.File;
import java.io.StringWriter;
public class JAXBExample {
public String CreateXML() {
PDXIReq pdxiReq = new PDXIReq(new Header("KO0haj000", "SS_ASED",
"CTY_IPC"), new Request("ACT_ACTION", 20131106, 111816,
9181626L, 0,1024, "1AJHSYQW36276354"));
StringWriter sw = new StringWriter();
try {
JAXBContext jaxbContext = JAXBContext.newInstance(PDXIReq.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders",
"\n<!DOCTYPE Example SYSTEM \"example.dtd\">");
jaxbMarshaller.marshal(pdxiReq, sw);
} catch (JAXBException e) {
e.printStackTrace();
}
return sw.toString();
}
}
https://stackoverflow.com/questions/2919294/how-to-add-doctype-and-xml-processing-instructions-when-marshalling-with-jaxb 'OutputStream'、'ライターを使用してみてください'、' StringWriter'の代わりに 'StreamResult'を使用します。 – ChristofferPass