簡體   English   中英

如何使用XSD模式創建有效的XML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM