JiBX 1.2,第2部分: 从XML模式到Java代码(二) - 编程入门网
配 清单 8 中所示的默认代码生成。choice-exposed="true" 将为状态变量添加 get 方法,使得所有这些内容可以公开访问。这将允许您轻松地使用 Java switch 语句以根据目前的状态执行不同的代码,而不再需要使用多条 if 语句。
这两个属性可以在任意级别的自定义中使用,允许您为最外层自定义中所有生成的代码轻松地设置行为,同时仍然保留根据具体情况执行其他操作的能力。 <xs:any> 和 mixed="true" 处理 和许多企业模式一样,HR-XML 模式将使用 <xs:any> 模式组件为数据创建扩展点,这些扩展点可以独立于原始模式,由用户定义。默认情况下,CodeGen 将使用 org.w3c.dom.Element 对象(如果 <xs:any> 中的 maxOccurs 值大于 1,则使用 Element 列表)处理 <xs:any> 模式组件。Element 对象可用于表示任意一个 XML 元素(包括所有属性、名称空间声明和内容),因此它将提供处理任何匹配模式定义的文档所需的所有灵活性。 清单 9 显示了匹配 清单 7 模式样例的 <xs:any> 组件的生成代码。由于 <xs:any> 使用 maxOccurs="unbounded",因此生成的代码将使用一个 Element 列表。 清单 9. <xs:any> 生成的代码样例 /** * ... * Schema fragment(s) for this class: * <pre> * <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" mixed="true" * name="AdditionalDataType"> * <xs:sequence> * <xs:any minOccurs="0" maxOccurs="unbounded" processContents="strict" * namespace="##any"/> * </xs:sequence> * <xs:attribute type="xs:string" name="type"/> * </xs:complexType> * </pre> */ public class AdditionalDataType { private List<Element> anyList = new ArrayList<Element>(); private String type; /** * Get the list of sequence items. * * @return list */ public List<Element> getAny() { return anyList; } /** * Set the list of sequence items. * * @param list */ public void setAny(List<Element> list) { anyList = list; } ... } JiBX 1.2,第2部分: 从XML模式到Java代码(二)(3)时间:2012-01-14 IBM Dennis Sosnoski清单 9 中模式定义的某些方面是被忽略的,或者只是由 CodeGen 处理了一部分。首先,封装的 <xs:complexType> 定义指定了 mixed="true",这意味着允许将字符数据与 <xs:any> 粒子所表示的元素相混合。CodeGen 所生成的数据模型没有空间来保存这类字符-数据内容,因此在文档被解组时,这些内容将被丢弃。其次,<xs:any> 将使用 processContents="strict",意味着实例文档中存在的所有元素都需要拥有自己的模式定义。CodeGen 将忽略此属性,尽管可能使用其他形式的 <xs:any> 处理(下面将讨论)得到类似的效果。CodeGen 还将忽略 <xs:any> 名称空间限制。清单 9 使用 namespace="##any",表示匹配 <xs:any> 的元素都不受名称空间的限制,但是举例来说,如果该值是 namespace="##other",则结果应当相同。 您可以在任意级别的自定义中使用 any-handling 自定义属性,选择处理 <xs:any> 的其他方式 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |