2
我有幾個XSD文件和相應的XJC文件。使用JAXB生成的所有XML文件的版本號應該是統一的,應該從XJC或jaxb.properties文件中選取。我無法找到XML版本號,JAXB指的是。默認情況下它生成1.0。如何在使用JAXB進行編組時生成非1.0版本的XML版本
我有幾個XSD文件和相應的XJC文件。使用JAXB生成的所有XML文件的版本號應該是統一的,應該從XJC或jaxb.properties文件中選取。我無法找到XML版本號,JAXB指的是。默認情況下它生成1.0。如何在使用JAXB進行編組時生成非1.0版本的XML版本
本質上,您需要使用Marshaller.JAXB_FRAGMENT
屬性將JAXB Marshaller
設置爲片段模式。然後自己編寫XML頭。以下示例演示瞭如何通過StAX完成此操作。
演示
package forum7009289;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);
Root root = new Root();
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
XMLOutputFactory xof = XMLOutputFactory.newFactory();
XMLStreamWriter xsr = xof.createXMLStreamWriter(System.out);
xsr.writeStartDocument("1.1");
marshaller.marshal(root, xsr);
xsr.writeEndDocument();
}
}
根
package forum7009289;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Root {
}
輸出
<?xml version='1.1' encoding='UTF-8'?><root/>
只有兩種爲XML合法的版本號:1.0和1.1。有沒有什麼好的理由你想要生成1.1?或者你有可能誤解了XML聲明中version屬性的用途? –