オブジェクトをマーシャリングするために JAXB を使用していますが、現在のコンソール出力は、生成された XML ファイルとは異なります。
コンソール:
<!-- My awesome comment -->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Cat>
<name>Toby</name>
</Cat>
生成:
<Cat>
<name>Toby</name>
</Cat>
コンソールの出力が内部で生成されたものと一致することを期待していますが、Cat.xml
そうではありません。私の質問は、「正しい」を生成するための私のアプローチで何が間違っているのCat.xml
ですか? 以下の最小機能プログラム:
public class CatDriver{
public static void main(String[] args) throws JAXBException, IOException,
ParserConfigurationException, TransformerException {
Cat cat = new Cat();
cat.setName("Toby");
JAXBContext context = JAXBContext.newInstance(Cat.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(
"com.sun.xml.bind.xmlHeaders",
"<!-- My awesome comment"
+ " --> \n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
m.marshal(cat, System.out);
Writer w = null;
try {
w = new FileWriter("C:/test/Cat.xml");
m.marshal(cat, w);
} finally {
try {
w.close();
} catch (Exception e) {
}
}
}
}
@XmlRootElement(name = "Cat")
class Cat {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}