簡體   English   中英

Jaxb:如何為XSD元素指定默認類

[英]Jaxb: How to specify a default class for an XSD element

從XSD生成Java類時,如何指定某個特定節點使用特定且已經存在的Java類,而不是嘗試生成一個Java類?

非常感謝你。

您應該使用以下綁定自定義

<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:annox="http://annox.dev.java.net" xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
    <bindings schemaLocation="../schema/yourSchema.xsd">

        <bindings node="//xs:complexType[@name='Foo']">
            <class ref="com.FooImpl"/> 
        </bindings>

    </bindings>
</bindings>

您可以使用episode文件來引用現有的類。 .episode文件只是jaxb綁定文件,並且具有元素和Java類之間的映射。

a)如果這些現有類也從(另一個)xsd中生成。 使用以下選項首先創建.episode文件。

xjc -episode a.episode a.xsd

然后使用包含映射的a.episode作為下一代xjc輸入。

xjc b.xsd -extension -b a.episode

b)如果要引用一些隨機類,則可能必須編寫自己的情節文件,以提供elementclass reference之間的映射,如下所示。

樣本集

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" if-exists="true" version="2.1">
 <jaxb:bindings scd="x-schema::">
    <jaxb:bindings scd="employee">
      <jaxb:class ref="www1.example.Employee"/>
      <jaxb:package name="www1.example" />
    </jaxb:bindings>
   </jaxb:bindings>

並使用xjc b.xsd -extension -b sample.episode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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