對於只包含顯示元素的模式,可以使用JAXB在Java中生成所需的實例。我爲您的示例添加了一些上下文,幷包含一個名稱空間。這是一個完整的XML Schema文件(我把它叫做animals.xsd
):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://animals"
targetNamespace="http://animals"
elementFormDefault="qualified">
<xs:element name="Animal">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
使用xjc
工具(XSD到Java編譯器),您可以生成XML架構的類。所以,你可以簡單地運行:
xjc animals.xsd
它會生成這些文件
animals/Animal.java
animals/ObjectFactory.java
animals/package-info.java
將這些classpath中。現在,你可以寫一個簡單的程序,您可以創建使用類實例,然後利用JAXB編組它序列化到XML:
import animals.Animal;
import javax.xml.bind.*;
public class App {
public static void main(String[] args) throws JAXBException {
Animal tiger = new Animal();
tiger.setType("carnivore");
tiger.setValue("Tiger");
JAXBContext jaxbContext = JAXBContext.newInstance(Animal.class);
Marshaller m = jaxbContext.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(tiger, System.out);
}
}
結果將被打印到控制檯:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Animal xmlns="http://animals" type="carnivore">Tiger</Animal>
什麼你想要使用模式嗎?你是否想將你的實例與你的模式關聯起來,這樣它可以被驗證?除非您使用模式來生成實例,否則不存在「預期輸出」這樣的事情。在這種情況下,你可能想用Java編寫一些東西。是嗎? – helderdarocha
是的,我想將我的實例與模式關聯。 我想使用XSD文件顯示上面的例外輸出。 – user3348161
哦,好的。然後我會將其添加到答案中。 – helderdarocha