Altova XMLSpy 2023 Enterprise Edition

字符类型

生成的C++代码可以在有或没有Unicode支持的情况下编译。根据此处选择的设置,string_typetstring类型都被定义为std::stringstd::wstring,由窄字符或宽字符组成。要在您的XML文件中使用当前8位字符集无法表示的Unicode字符,必须启用Unicode支持。请小心使用_T() 宏。无论您是为Unicode还是非Unicode程序编译,此宏都可确保正确存储字符串常量。

 

数据类型

从XML Schema类型到C++数据类型的默认映射如下:

 

XML Schema

C++

备注

xs:string

string_type

string_type被定义为std::string或std:wstring

xs:boolean

bool


xs:decimal

double

C++没有decimal类型,因此使用double。

xs:float, xs:double

double


xs:integer

__int64

xs:integer没有范围限制,映射到 __int64以提高效率。

xs:nonNegativeInteger

unsigned __int64

参见上文

xs:int

int


xs:unsignedInt

unsigned int


xs:dateTime, date, time, gYearMonth, gYear, gMonthDay, gDay, gMonth

altova::DateTime


xs:duration

altova::Duration


xs:hexBinary and xs:base64Binary

std::vector<unsigned char>

二进制数据的编码和解码都是自动完成的。

xs:anySimpleType

string_type


 

未包含在列表中的所有XML Schema类型都是派生类型,并且映射到与相应基类型相同的C++类型。

 

生成的类

为Schema中的每个类型都会生成一个类,其中包含该类型的每个属性和元素的成员。这些成员被赋予与原始Schema中的特性或元素相同的名称(为了避免可能的冲突,追加了一个数字)。对于简单类型,将生成赋值和转换运算符。对于具有枚举方面的简单类型,可以使用GetEnumerationValue()SetEnumerationValue(int)方法以及为每个枚举值生成的常量。此外,还可以使用StaticInfo()方法通过以下类型之一访问Schema信息:

 

altova::meta::SimpleType

altova::meta::ComplexType

 

从复杂类型生成的类包含SetXsiType()方法,它允许您设置该类型的xsi:type特性。当您想从派生类型创建XML实例元素时这一方法将十分有用。

 

除了在XML Schema中声明的类型的类以外,还会生成一个文档类(在下文中用“CDoc”标识)。它包含所有可能的根元素作为成员,以及各自其他方法。有关该类的更多信息,请参见[YourSchema]::[CDoc]

 

提示:        实际的类名称取决于.xsd schema的名称。

 

对于Schema类型的每个成员特性或元素,将生成一个新的类。有关该类的更多信息,请参见:

 

[YourSchema]::MemberAttribute

[YourSchema]::MemberElement

 

提示:        实际的类名取决于Schema特性或元素的名称。

 

另请参见示例:使用Schema包装库

 

处理错误

错误由异常报告。在命名空间altova中定义了以下异常类:

 

Class

基类

描述

错误

std::logic_error

内部程序逻辑错误(与输入数据无关)。

Exception

std::runtime_error

运行时错误的基类。

InvalidArgumentsException

Exception

使用无效的参数值调用了一个方法。

ConversionException

Exception

类型转换失败导致出现异常。

StringParseException

ConversionException

词法空间中的值无法转换为值空间。

ValueNotRepresentableException

ConversionException

值空间中的值无法转换为词法空间。

OutOfRangeException

ConversionException

无法在目标域中表示源值。

InvalidOperationException

Exception

尝试执行在此上下文中无效的操作。

DataSourceUnavailableException

Exception

加载XML实例时出现问题。

DataTargetUnavailableException

Exception

保存XML实例时出现问题。

 

所有异常类都包含一条消息文本和一个指向可能的内部异常的指针。

 

方法

目的

string_type message()

返回异常的文本描述。

std::exception inner()

如果可用,则返回导致此异常的异常;否则返回NULL。

 

访问Schema信息

可以使用生成的库通过以下类访问静态Schema信息。所有方法都声明为const。如果不存在相应的属性,则返回任何元数据类的方法会返回一个NULL对象。

 

altova::meta::Attribute

altova::meta::ComplexType

altova::meta::Element

altova::meta::SimpleType

© 2017-2023 Altova GmbH