关于Schema包装库(Java)
从XML Schema类型到Java数据类型的默认映射如下:
XML Schema | Java | 备注 |
---|---|---|
xs:string | 字符串 | |
xs:boolean | boolean | |
xs:decimal | java.math.BigDecimal | |
xs:float, xs:double | double | |
xs:integer | java.math.BigInteger | |
xs:long | long | |
xs:unsignedLong | java.math.BigInteger | Java没有无符号类型。 |
xs:int | int | |
xs:unsignedInt | long | Java没有无符号类型。 |
xs:dateTime, date, time, gYearMonth, gYear, gMonthDay, gDay, gMonth | ||
xs:duration | ||
xs:hexBinary and xs:base64Binary | byte[] | 二进制数据的编码和解码都是自动完成的。 |
xs:anySimpleType | 字符串 |
未包含在列表中的所有XML Schema类型都是派生类型,并且映射到与相应基类型相同的Java类型。
生成的类
为Schema中的每个类型都会生成一个类,其中包含该类型的每个属性和元素的成员。这些成员被赋予与原始Schema中的特性或元素相同的名称(为了避免可能的冲突,追加了一个数字)。对于简单类型,将生成赋值和转换运算符。对于具有枚举方面的简单类型,可以使用GetEnumerationValue()和SetEnumerationValue(int)方法以及为每个枚举值生成的常量。此外,还可以使用StaticInfo()方法通过以下类型之一访问Schema信息:
com.altova.xml.meta.SimpleType
com.altova.xml.meta.ComplexType
从复杂类型生成的类包含SetXsiType()方法,它允许您设置该类型的xsi:type特性。当您想从派生类型创建XML实例元素时这一方法将十分有用。
除了在XML Schema中声明的类型的类以外,还会生成一个文档类(在下文中用“Doc”标识)。它包含所有可能的根元素作为成员,以及各自其他方法。有关该类的更多信息,请参见com.[YourSchema].[Doc]。
提示: 实际的类名称取决于.xsd schema的名称。
对于Schema类型的每个成员特性或元素,将生成一个新的类。有关该类的更多信息,请参见:
com.[YourSchema].[YourSchemaType].MemberAttribute
com.[YourSchema].[YourSchemaType].MemberElement
提示: 实际的类名取决于Schema特性或元素的名称。
处理错误
错误由异常报告。在命名空间com.altova中定义了以下异常类:
Class | 基类 | 描述 |
---|---|---|
SourceInstanceUnvailableException | Exception | 加载XML实例时出现问题。 |
TargetInstanceUnavailableException | Exception | 保存XML实例时出现问题。 |
此外,通常使用以下Java异常:
Class | 描述 |
---|---|
java.lang.Error | 内部程序逻辑错误(与输入数据无关)。 |
java.lang.Exception | 运行时错误的基类。 |
java.lang.IllegalArgumentsException | 使用无效的参数值调用了一个方法,或类型转换失败。 |
java.lang.ArithmeticException | 数值类型转换失败导致出现异常。 |
访问Schema信息
可以使用生成的库通过以下类访问静态Schema信息。
com.altova.xml.meta.ComplexType
com.altova.xml.meta.SimpleType
如果不存在相应的属性,则返回任何元数据类的属性会返回NULL。