最近的项目中有个生成xml字符串的需求:
第三方合作伙伴提交一个请求,我们作为server端负责从DB中查询出符合条件的记录,然后构造成xml字符串返回给第三方合作伙伴。
以前有过dom的使用经验,但dom的缺点大家都知道:当xml比较复杂时,性能不是很好。当DB中记录比较多时,需要构造的xml会比较复杂。网上大家都说XmlBeans不错,这次尝试使用下,以下是具体的应用过程。
1. 准备工作
一、下载XmlBeans
必需的软件:XmlBeans安装包( 我们这里以XmlBeans 2.2.0为例)
二、设置环境变量(windows下和Linux下的基本一致)
(一) 修改PATH 环境变量把xmlbean\bin目录加入:%XMLBEANS_HOME%\bin.
(二) 修改CLASSPATH环境变量,添加XmlBean相关的几个jar包。
2. 定义xml文件格式,及生成xsd文件。
(一) 根据需要定义xml文件格式,可以不添加具体的数据,例如:
<?xml version="1.0" encoding="UTF-8"?>
<response >
<record>
<id/>
<order_username/>
<order_time/>
</record>
</response>
(二) 生成xsd文件。
可以使用XMLSPY通过XML文件来生成Schema文件,当然手工写是更好的。网上可以很容易找到XMLSPY。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--W3C Schema 由 XMLSpy v2006 U 创建 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="id" type="xs:string"/>
<xs:element name="order_time" type="xs:string"/>
<xs:element name="order_username" type="xs:string"/>
<xs:element name="record">
<xs:complexType>
<xs:sequence>
<xs:element ref="id"/>
<xs:element ref="order_username"/>
<xs:element ref="order_time"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:element ref="record"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
3. 使用XmlBeans命令生成xml对应的jar包和源文件。
scomp -src build\src -out build\testXmlBean.jar schema\test.xsd -compiler
C:\jdk150_12\bin\javac
scomp生成testXmlBean.jar,放在build目录下,同时生成源代码放在build\src下,Schema文件是test.xsd,我们要的是jar文件。
4. 制定testXmlBean.jar中类的路径。
<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
<xb:namespace>
<xb:package>test.pkg</xb:package>
</xb:namespace>
</xb:config>
test.pkg是testXmlBean.jar中的类所在的路径,这个是必须要制定的。
5. 构造xml文件。
根据DB中的数据,构造xml记录,常用于和第三方的数据通讯。
public static String createXML(List testList) {
StringBuffer xmlGen = new StringBuffer();
try{
ResponseDocument newPODoc = ResponseDocument.Factory.newInstance();
Response response = newPODoc.addNewResponse();
for(int i = 0; i < testList.size(); i++){
TestDTO testDTO = (TestDTO) testList.get(i);
Record record = response.addNewRecord();
record.setId(String.valueOftestDTO.getId)));
record.setOrderUsername(testDTO.getUsername());
record.setOrderTime(testDTO.getSubmitdate());
response.setRecordArray(i, record);
}
//生成xml文件
newPODoc.save(new File("/data/test/test" + DateUtils.dateToLongString(new Date()) + ".xml"));
xmlGen.append(newPODoc.xmlText());//xml字符串
}catch(Exception e){
e.printStackTrace();
}
return xmlGen.toString();
}
分享到:
相关推荐
XMLBeans提供的Api,如XmlObject、XmlCursor和SchemaType,分别提供了对XML实例的高级访问、低级别操作和模式元数据的访问,简化了XML在Java应用中的使用。 使用XMLBeans有以下几个显著优点: 1. **减少重复工作**...
在本文中,我们将深入探讨如何使用XmlBeans进行XML的读取和写入,并了解其背后的工作原理。 首先,XmlBeans通过解析XML Schema(XSD)文件生成Java类,这些类代表了XML文档的结构。这样,你可以像操作普通的Java...
本文档将为读者介绍 XmlBeans 的使用简介,包括 XmlSchema 的制作相关知识,以及如何使用 XmlBeans 工具在 Java 中轻松读写 XML。 一、XmlSchema 简介 XmlSchema 是一种基于 XML 的架构定义语言,用于定义 XML ...
XMLBeans的核心理念是将XML Schema转换为Java类,这样就可以直接在Java程序中以对象的形式处理XML数据,无需手动解析XML字符串。这个过程被称为XML Schema绑定(Schema-Based XML Binding)。 在提供的资源中,...
### XMLBeans使用手册详解 XMLBeans是Apache组织下的一个开源项目,它提供了一种将XML数据与Java对象之间进行转换的工具。通过XMLBeans,开发者能够轻松地将XML文档映射到Java对象,同时也可以将Java对象序列化为...
4. **解析XML**:使用JAXB API将XML反序列化为Java对象。 #### 四、XMLBeans XMLBeans是由Apache Software Foundation维护的一个开源项目,它提供了一套强大的工具集来处理XML数据。XMLBeans不仅仅是一个XML绑定...
接着,你可以使用XMLBeans的API来解析XML文件,将XML数据转换为Java对象,或者将Java对象序列化为XML。 Subversion(SVN)是一个版本控制系统,用于跟踪和控制代码的修改历史。在团队开发中,所有开发者都会将他们...
XMLBeans是Apache软件基金会开发的一个Java库,它提供了一种方式来处理XML文档,通过将XML Schema转换为Java类,使开发者能够以面向对象的方式与XML数据进行交互。这个库包含多个组件,如`jsr173_1.0_api.jar`、`...
XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档。 使用 XMLBeans 可以将 Java™ 编程语言与 XML 结合使用。Java 编程语言是一种面向对象的语言,它基于开放的、公开的标准,可移植、健壮而且可靠...
当XMLBeans解析一个XML Schema时,它会生成相应的Java类,这些类代表了Schema定义的数据结构。每个XML元素在Java中都有一个对应的类,属性则作为类的字段,而元素则作为方法。这样,XML文档就可以被映射到一组Java...
2. `stax-api.jar`:STAX(Streaming API for XML)是一个低级别的XML解析API,XMLBeans可能使用它来实现更高效的XML流处理。 3. `xbean_xpath.jar`:提供了XPath支持,允许你在Java代码中使用XPath表达式来查询XML...
2. **解析XML**:生成Java类后,你可以使用`XmlBeanFactory`来创建XML文档的Java表示。例如,`Document doc = XmlBeans.Factory.newDocumentBuilderFactory().newDocumentBuilder().parse(xmlFile)`。 3. **操作XML...
xmlbeans-3.1.0.jar包 XMLBeans是一种工具,可让您以Java友好的方式访问XML 的全部功能。 解决 java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException异常
在处理2007之后的 Excel 格式时,POI 使用了 XMLBeans 来解析和生成 XML 数据,因为这些格式本质上是基于 ZIP 的 XML 包。 当出现 `ClassNotFoundException`,尤其是找不到 `org.apache.xmlbeans.XmlOptions` 类时...
在读取.xlsx文件时,Apache POI会利用XMLBeans解析内含的XML数据,而写入时则可能使用XMLBeans将Java对象转换为XML。 标签中的"java"表明讨论的是与Java编程相关的技术。"excel"指的是Apache POI处理的文件类型。...
1. **XML Schema到Java的绑定**:XMLBeans会根据XML Schema定义生成相应的Java类,这些类包含了对XML文档的解析和序列化功能。这样,开发者可以使用面向对象的方式来处理XML,而无需直接操作DOM或SAX等底层API。 2....
开发者在使用时,首先需要了解XML Schema的概念,然后根据自己的XML数据定义相应的Schema文件,再使用XMLBeans提供的工具(如scomp)进行编译,生成相应的Java类。最后,就可以在项目中导入生成的库,使用这些Java类...
XMLBeans是Apache软件基金...通过对XMLBeans源码的学习,开发者可以更好地理解XML在Java应用程序中的使用,以及如何利用XMLBeans进行高效的XML处理。同时,这也为自定义XML处理逻辑或者扩展XMLBeans的功能提供了基础。
XMLBeans的使用能够加强XFire在处理XML消息时的能力,提供更高效的XML解析和序列化。 - **结合使用场景**:当使用XFire创建或调用Web服务时,XMLBeans可以作为默认的数据绑定机制,使得XML数据和Java对象之间的转换...
6. **性能和内存使用**:虽然XMLBeans提供了强类型和面向对象的XML处理方式,但它可能会占用更多的内存,且相比DOM或SAX解析器,性能可能较低。因此,在大型项目中,需要权衡其便利性和性能需求。 7. **集成到Java...