`

XmlType and XmlAccessorType

 
阅读更多
javax.xml.bind.annotation
注释类型 XmlType

@Retention(value=RUNTIME)
@Target(value=TYPE)
public @interface XmlType
将类或枚举类型映射到 XML 模式类型。

用法

@XmlType 注释可以与以下程序元素一起使用:

顶层类
枚举类型
有关其他公共信息,请参阅 javax.xml.bind.package javadoc 中的“包规范”。

映射一个类

将一个类映射到 XML 模式类型。类是通过属性和字段表示的值的数据容器。模式类型是一个数据容器,用于模式类型的内容模式中的模式组件(如模型组件、属性等)所表示的值。

要被映射,类必须拥有一个不带参数的公共构造方法,或者一个静态的不带参数的工厂方法。静态工厂方法可以使用 factoryMethod() 和 factoryClass() 注释元素来指定。在解组过程中将使用静态工厂方法或不带参数的构造方法来创建此类的实例。如果两者同时存在,则静态工厂方法将重写不带参数的构造方法。

将类映射到 XML 模式复杂类型或 XML 模式简单类型。XML 模式类型是基于类中包含的 JavaBean 属性和字段的映射派生出来的。类将要映射到的模式类型可以是已命名的,也可以是匿名的。通过使用 @(name="") 对类进行注释,可以将该类映射到匿名模式类型。

全局元素、本地元素或本地属性都可以与匿名类型关联,如下所示:

全局元素:通过使用 @XmlRootElement 对类进行注释,可以派生出一个匿名类型的全局元素。请参阅下文示例 3。
本地元素: JavaBean 属性,引用使用 @XmlType(name="") 注释的类且映射到与匿名类型关联的某一元素。请参阅下文示例 4。
属性: JavaBean 属性,引用使用 @XmlType(name="") 注释的类且映射到与匿名类型关联的某一属性。请参阅下文示例 5。
映射到 XML 模式复杂类型
如果使用 @XmlType(name="") 对类进行注释,那么该类将被映射到匿名类型。否则将类名称映射到复杂类型名称。可以使用 XmlName() 注释元素来自定义名称。
映射到元素的属性和字段将映射到复杂类型中的内容模式。可以使用注释元素 propOrder() 将内容模式自定义为 xs:all 或 xs:sequence,还可以使用该元素指定 xs:sequence 中 XML 元素的顺序。
可以映射到复杂类型中的属性的属性和字段。
XML 模式类型的 targetnamespace 可以使用注释元素 namespace() 自定义。
将类映射到 XML 模式简单类型

可以使用 @XmlValue 注释将类映射到 XML 模式简单类型。有关其他详细信息和示例,请参阅 @XmlValue 注释类型。

下表显示了类到 XML 模式复杂类型或简单类型的映射。表中使用的标志符号是:

-> : 代表一个映射
[x]+ 出现一次或多次
[ @XmlValue property ]:使用 @XmlValue 注释的 JavaBean 属性
X :任意
Target propOrder ClassBody ComplexType SimpleType
Class {} [property]+ -> elements complexcontent
xs:all
Class non empty [property]+ -> elements complexcontent
xs:sequence
Class X no property -> element complexcontent
empty sequence
Class X 1 [ @XmlValue property] &&
[property]+ ->attributes simplecontent
Class X 1 [ @XmlValue property ]&&
no properties -> attribute simpletype
映射一个枚举类型

将枚举类型映射到带有 enumeration facet 的 XML 模式简单类型。由于没有意义,以下注释元素将被忽略:propOrder()、factoryMethod() 和 factoryClass()。
与其他注释一起使用的方法

此类可与以下注释一起使用: XmlRootElement、XmlAccessorOrder、XmlAccessorType、 XmlEnum。但是,当此注释用于枚举类型时,将忽略 XmlAccessorOrder 和 XmlAccessorType。

示例 1:将类映射到具有 xs:sequence 属性和自定义的 JavaBean 排序的复杂类型。

   @XmlType(propOrder={"street", "city" , "state", "zip", "name" })
   public class USAddress {
     String getName() {..};
     void setName(String) {..};

     String getStreet() {..};
     void setStreet(String) {..};

     String getCity() {..};
     void setCity(String) {..};

     String getState() {..};
     void setState(String) {..};

     java.math.BigDecimal getZip() {..};
     void setZip(java.math.BigDecimal) {..};
   }

   <!-- XML Schema mapping for USAddress -->
   <xs:complexType name="USAddress">
     <xs:sequence>
       <xs:element name="street" type="xs:string"/>
       <xs:element name="city" type="xs:string"/>
       <xs:element name="state" type="xs:string"/>
       <xs:element name="zip" type="xs:decimal"/>
       <xs:element name="name" type="xs:string"/>
     </xs:all>
   </xs:complexType>

示例 2:将类映射到具有 xs:all 属性的复杂类型

@XmlType(propOrder={})
public class USAddress { ...}

<!-- XML Schema mapping for USAddress -->
<xs:complexType name="USAddress">
   <xs:all>
     <xs:element name="name" type="xs:string"/>
     <xs:element name="street" type="xs:string"/>
     <xs:element name="city" type="xs:string"/>
     <xs:element name="state" type="xs:string"/>
     <xs:element name="zip" type="xs:decimal"/>
   </xs:sequence>
</xs:complexType>
示例 3:将类映射到具有匿名类型的全局元素。

   @XmlRootElement
   @XmlType(name="")
   public class USAddress { ...}

   <!-- XML Schema mapping for USAddress -->
   <xs:element name="USAddress">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:element name="street" type="xs:string"/>
         <xs:element name="city" type="xs:string"/>
         <xs:element name="state" type="xs:string"/>
         <xs:element name="zip" type="xs:decimal"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>

示例 4:将属性映射到具有匿名类型的本地元素。

   //Example: Code fragment
   public class Invoice {
       USAddress addr;
           ...
       }

   @XmlType(name="")
   public class USAddress { ... }
   }

   <!-- XML Schema mapping for USAddress -->
   <xs:complexType name="Invoice">
     <xs:sequence>
       <xs:element name="addr">
         <xs:complexType>
           <xs:element name="name", type="xs:string"/>
           <xs:element name="city", type="xs:string"/>
           <xs:element name="city" type="xs:string"/>
           <xs:element name="state" type="xs:string"/>
           <xs:element name="zip" type="xs:decimal"/>
         </xs:complexType>
       ...
     </xs:sequence>
   </xs:complexType>

示例 5:将属性映射到具有匿名类型的属性。


     //Example: Code fragment
     public class Item {
         public String name;
         @XmlAttribute
         public USPrice price;
     }
   
     // map class to anonymous simple type.
     @XmlType(name="")
     public class USPrice {
         @XmlValue
         public java.math.BigDecimal price;
     }

     <!-- Example: XML Schema fragment -->
     <xs:complexType name="Item">
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:attribute name="price">
           <xs:simpleType>
             <xs:restriction base="xs:decimal"/>
           </xs:simpleType>
         </xs:attribute>
       </xs:sequence>
     </xs:complexType>

示例 6: 定义 factoryClass 和 factoryMethod


      @XmlType(name="USAddressType", factoryClass=USAddressFactory.class,
      factoryMethod="getUSAddress")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

      public USAddress(String name, String street, String city,
          String state, int zip) {
          this.name = name;
          this.street = street;
          this.city = city;
          this.state = state;
          this.zip = zip;
      }
  }

  public class USAddressFactory {
      public static USAddress getUSAddress(){
       return new USAddress("Mark Baker", "23 Elm St",
          "Dayton", "OH", 90952);
  }


示例 7:定义 factoryMethod 并使用默认 factoryClass

      @XmlType(name="USAddressType", factoryMethod="getNewInstance")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

          private USAddress() {}

          public static USAddress getNewInstance(){
              return new USAddress();
          }
      }

从以下版本开始:
JAXB2.0
另请参见:
XmlElement, XmlAttribute, XmlValue, XmlSchema

可选元素摘要
Class factoryClass
          包含用来创建此类实例的不带参数的工厂方法的类。
String factoryMethod
          一个不带参数的构造方法的名称,该构造方法在 factoryClass factoryClass() 所指定的类。
String name
          类被映射到的 XML 模式类型名称。
String namespace
          XML 模式类型的目标名称空间名。
String[] propOrder
          在将类映射到 XML 模式复杂类型时,指定 XML 模式元素的顺序。


name

public abstract String name
类被映射到的 XML 模式类型名称。
默认值:
"##default"
propOrder

public abstract String[] propOrder
在将类映射到 XML 模式复杂类型时,指定 XML 模式元素的顺序。
有关 propOrder 影响类映射的方式,请参见上表。

propOrder 是类中 JavaBean 属性的名称列表。列表中的每个名称都是 JavaBean 属性的 Java 标识符的名称。JavaBean 属性被列出的顺序是 JavaBean 属性映射到 XML 模式元素的顺序。

必须列出所有映射到 XML 模式元素的 JavaBean 属性。

以 propOrder 顺序列出的 JavaBean 属性或字段不得为 transient 或使用 @XmlTransient 注释。

JavaBean 属性的默认顺序由 @XmlAccessorOrder 确定。

默认值:
""
namespace

public abstract String namespace
XML 模式类型的目标名称空间名。默认情况下,这是包含类的包将被映射到的目标名称空间。
默认值:
"##default"
factoryClass

public abstract Class factoryClass
包含用来创建此类实例的不带参数的工厂方法的类。默认值为此类。
如果 factoryClass 为 DEFAULT.class 且 factoryMethod 为 "",则没有静态工厂方法。

如果 factoryClass 为 DEFAULT.class 且 factoryMethod 不为 "",则 factoryMethod 是此类中静态工厂方法的名称。

如果 factoryClass 不是 DEFAULT.class,则 factoryMethod 不得为 "",且必须是 factoryClass 中指定的静态工厂方法的名称。

默认值:
javax.xml.bind.annotation.XmlType.DEFAULT.class
factoryMethod

public abstract String factoryMethod
一个不带参数的构造方法的名称,该构造方法在 factoryClass factoryClass() 所指定的类。
默认值:
""

avax.xml.bind.annotation
注释类型 XmlAccessorType

@Inherited
@Retention(value=RUNTIME)
@Target(value={PACKAGE,TYPE})
public @interface XmlAccessorType
控制默认情况下是否对字段或 Javabean 属性进行系列化。

用法

@XmlAccessorType 注释可以与以下程序元素一起使用:


顶层类
有关其他公共信息,请参阅 javax.xml.bind.package javadoc 中的“包规范”。

此注释可控制类中的属性和字段的默认序列化。

包上的 @XmlAccessorType 注释可应用于包中的所有类。继承语义的应用如下:

如果类中有 @XmlAccessorType,则使用它。
如果 @XmlAccessorType 存在于该类的一个超类中,则继承它。
否则,将继承包中的 @XmlAccessorOrder。
默认规则:

默认情况下,如果包中不存在 @XmlAccessorType,那么假定使用以下包级别注释。

@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)

默认情况下,如果类中不存在 @XmlAccessorType,并且没有任何超类是使用 @XmlAccessorType 注释的,则假定在类中使用以下默认注释:

@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)

此注释可与以下注释一起使用:XmlType、XmlRootElement、XmlAccessorOrder、{@link XmlSchema}、{@link XmlSchemaType}、{@link XmlSchemaTypes} 和 {@link XmlJavaTypeAdapter}。在包级别上它还可以与以下注释一起使用:{@link XmlJavaTypeAdapter}。

从以下版本开始:
JAXB 2.0
另请参见:
XmlAccessType

可选元素摘要
XmlAccessType value
          指定是否对字段或属性进行系列化。


value

public abstract XmlAccessType value
指定是否对字段或属性进行系列化。
另请参见:
XmlAccessType
默认值:
javax.xml.bind.annotation.XmlAccessType.PUBLIC_MEMBER
分享到:
评论

相关推荐

    xmltype需要jar包

    XMLType是Oracle数据库中用于存储和操作XML数据的一种特殊数据类型。在Oracle环境中处理XMLType时,需要依赖特定的Java库,这些库包含了处理XML数据的API和功能。标题提到的"xmltype需要jar包",实际上指的是在Java...

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...

    oracle操作xmltype

    Oracle数据库系统支持对XML数据的存储和处理,其中XMLType是Oracle提供的一种专门用于处理XML数据的数据类型。本文将深入探讨Oracle操作XMLType的相关知识点,包括XMLType的创建、查询、更新以及与其他对象的交互。 ...

    JAXB-XML注解

    它通常与 @XmlType 和 @XmlAccessorType 一起使用。 例如: ```java @XmlType @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement public class Address { // ... } ``` 四、@XmlAttribute 注解 @...

    jaxb解析xml

    @XmlRootElement 用于类级别的注解,对应 xml 的根元素,常与 @XmlType 和 @XmlAccessorType 一起使用。 参数: * name:定义这个根节点的名称。 * namespace:定义这个根节点命名空间。 例子: ``` @XmlType @...

    Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据

    在Java开发中,当需要与Oracle数据库交互时,特别是涉及到XML数据的存储,XMLType是Oracle提供的一种专门用于存储XML格式数据的类型。本文将详细探讨如何使用Java的JDBC和MyBatis框架来处理Oracle中的XMLType数据。 ...

    oracle解析XMLTYPE字段里面节点值,并用PL/SQL将查询结果导出为excel

    oracle解析XMLTYPE字段里面节点值,并用PL/SQL将查询结果导出为excel

    java中xml文件的处理及oracle中xmltype的插入和读取.docx

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中对 XML 文件的读取、写入、解析和处理操作。XML(Extensible Markup Language)是一种标记语言,用来存储...

    XMLtype-开源

    XMLtype 是一款开源的、基于控制台的 XML 文件编辑器,专为处理 UTF-8 编码的 XML 文档而设计。它具有高度的多语言兼容性,支持包括双向文本在内的多种语言混合编辑,这对于那些需要同时处理如英语和希伯来语这类...

    Oracle Database Architecture 9i and 10g Programming Techniques and Solutions

    总的来说,Oracle Database Architecture 9i和10g Programming Techniques and Solutions涵盖了数据库设计、实施、管理和优化的各个方面,是理解Oracle数据库工作原理和提升数据库技能的重要资源。无论是DBA还是...

    Java解析和生成XML.pdf

    - `@XmlRootElement`注解的类应当有一个无参构造函数,并且通常需要使用`@XmlType`和`@XmlAccessorType`来控制生成的XML结构。 - 使用`@XmlAttribute`时,可以在类中定义私有属性,并通过公共的getter和setter方法...

    xdb6.jar、xmlparserv2.jar

    这里我们关注的是两个特定的JAR文件:“xdb6.jar”和“xmlparserv2.jar”,它们与Oracle数据库中的XMLType类型处理以及JDBC(Java Database Connectivity)操作紧密相关。这两个库在处理XML数据存储和检索时扮演着...

    详解Java解析XML的四种方法

    Java解析XML的四种方法分别是DOM、SAX、JDOM和DOM4J,它们各自具有不同的特点和适用场景。本文将详细探讨这四种方法,并通过一个简单的XML示例来展示其用法。 首先,DOM(Document Object Model)是W3C制定的一种...

    Oracle的XML函数

    SELECT EXTRACT(XMLTYPE('&lt;PurchaseOrder&gt;&lt;Reference&gt;ADAMS-20011127121040988PST&lt;/Reference&gt;&lt;/PurchaseOrder&gt;'),'//Reference') FROM DUAL; 2. UPDATEXML 函数 UPDATEXML 函数用于更新 XML 文档。该函数的语法为...

    Oracle 中XML处理函数介绍

    1. **EXTRACT(XMLType_instance,Xpath_string)** 此函数根据指定的XPath表达式从XMLType对象中提取内容。XPath是一种在XML文档中查找信息的语言,它允许定位节点、选取节点集合,甚至计算数值。例如,`SELECT ...

    PLSQL_Developer_9.0.5.1648

    * SQL Window and Test Window did not display SYS.XMLTYPE attributes of an object field * Typing a target schema name in the Compare Table Data tool could cause an "Invalid Typecast" error * Compare ...

    在Oracle XML DB中存储XML

    - **WebDAV** (Web Distributed Authoring and Versioning) 是一种基于HTTP的协议扩展,用于远程文件管理和版本控制。 - 用户可以通过标准的Web浏览器或其他工具(如Windows Explorer)直接访问和管理Oracle XML DB...

    Oracle_XML.rar_oracle

    3. **XMLQuery and XMLTable**: 这两个函数是SQL/PLSQL中的XML处理核心。XMLQuery可以从XMLType对象中提取数据,而XMLTable则可以将XML数据转换为关系表,方便进一步的SQL操作。例如,你可以使用XMLQuery来提取XML...

    使用JDBC实现XML文档到Oracle9i数据库的存取.pdf

    在Oracle9i中,XML文档可以被映射为XMLType数据类型,这是一种特殊的Oracle数据类型,专门用于存储XML数据。 在将XML文档存入Oracle9i数据库时,首先需要将XML文档结构映射到数据库模式。这通常涉及到创建一个或多...

Global site tag (gtag.js) - Google Analytics