动态管理 XMLBeans 应用程序中的 XML 模式变体
来源:互联网 发布:读取大智慧实时数据 编辑:程序博客网 时间:2024/06/05 03:38
Apache XMLBeans 本身并不支持多个 XML 模式版本。对于需要这种支持来实现兼容性管理的应用程序,这种是一个很大的限制。但是这个问题是可以解决的。在本文中,您将了解到动态类加载技术如何帮助解决问题。
Apache XMLBeans 是一种开源的、与 XML 和 Java™ 绑定的工具,可用来从 XML 模式生成 Java 类和接口。使用生成的 beans,就可以解析或生成遵循模式的 XML 文档。因此,这种绑定会紧密地将生成的 Java 类和 XML 模式耦合在一起。在对 XML 模式执行或大或小的修改时,将重新生成 bean 并使用与修改后的 XML 模式对应的新 bean。至少,它正设法实现这一点。不幸的是,应用程序有时需要支持多个模式版本。例如,如果将 XML 用作数据交换标准,应用程序必须提供向前和向后兼容性,以支持较新或较旧的版本标准。
环境设置
考虑一个雇员数据管理应用程序,其中应用程序使用 XML 文件的形式保存雇员信息,并使用 Apache XMLBeans 进行处理。雇员数据一直由 XSD 定义,如清单 1 所示。模式使用 XMLBeans 模式编译器编译。应用程序然后使用生成的 Java 类和接口处理传入的 XML 文档,这个文档遵循 XSD,名称空间为 com.ibm.sample.employee:1
。
清单 1. 雇员 XML 模式的第一个版本
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="com.ibm.sample.employee:1" elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="com.ibm.sample.employee:1">
<element name="employee" type="tns:employeeType"></element>
<complexType name="employeeType">
<sequence>
<element name="firstName" type="string"></element>
<element name="lastName" type="string"></element>
<element name="department" type="string"></element>
<element name="phone" type="string"></element>
<element name="eEmail" type="string"></element>
</sequence>
</complexType>
</schema>
清单 2 展示了处理雇员 XML 的应用程序,清单 3 展示了使用它的客户机应用程序:
清单 2. XMLBeans 应用程序
public class EmployeeApplication {
public void parseXML(String xmlFileName){
EmployeeDocument employeeDoc =
EmployeeDocument.Factory.parse(new File(xml));
EmployeeType employee = employeeDoc.getEmployee();
System.out.println(employee.getFirstName());
// Do something more useful with the employee data
}
}
清单 3. 客户机
EmployeeApplication app = new EmployeeApplication();
app.parseXML(xmlFilePath);
模式变更简介
现在假设模式被更改,为旧模式生成的 Java bean 再也不能使用新模式处理 XML。清单 4 展示了修改后的模式,其中添加了一些新元素,并将名称空间改为 com.ibm.sample.employee:2
,表示这是第二个版本。
清单 4. 雇员 XML 模式的第二个版本
本文转自IBM Developerworks中国
请点击此处查看全文
- 动态管理 XMLBeans 应用程序中的 XML 模式变体
- 使用XMLBeans 处理XML
- xmlbeans XMLSpy 解析xml
- 使用xmlbeans解析xml
- 使用XmlBeans读写xml
- xmlbeans 封装xml
- 用XmlBeans处理XML文档
- C#中的变体
- xmlbeans
- XML&Java&XMLBeans结合应用的价值
- XMLBEANS--XML解析的另一种选择
- pipeline-filter模式变体之尾循环
- 变体类型在循环中的测试
- Delphi中的变体Variant数组相关函数
- aiCache应用程序加速实现管理后备模式
- c++中的动态内存管理
- C++中的动态内存管理
- AIX 6.1 中的动态应用程序迁移
- 用 Yahoo! Blueprint 开发移动小部件
- 如何在 WebSphere Business Modeler 中集成 CVS
- 案例研究:SOA 零售业务模式
- 使用 Parallel NFS 增强文件系统
- 通过智能活动监视器降低 PC 的功耗
- 动态管理 XMLBeans 应用程序中的 XML 模式变体
- 面试参考网站收藏
- Software Defined Radio for 3G
- 演练:使用 Visual Studio Team Test 进行单元测试
- Ubuntu——Linux在学校上网……娱乐、学习一个都不误!
- 如何禁用双击窗体图标关闭窗体
- Eclipse下ExtJs插件导入
- J2ee中文问题的解决
- 开发 ASP.NET 工作流应用程序