![](/img/trans.png)
[英]how to create xsd for xml which has namespace for Webmethod schema
[英]How to create valid xml using xsd schema
我想將下面定義的xml模式查看到我期望的xml中。 誰能幫我在XSD中寫些什么。 提前致謝。 XML模式:
<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>
XML的預期輸出: <Animal type="carnivore">Tiger</Animal>
。
使用僅包含顯示元素的模式,可以使用JAXB在Java中生成所需的實例。 我向您的示例添加了一些上下文,並包括一個名稱空間。 這是完整的XML模式文件(我稱其為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
將它們放在您的類路徑中。 現在,您可以編寫一個簡單的程序,在其中可以使用該類創建實例,然后使用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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.