问题:给出一个xml文件,利用xmlbeans实现与该xml同schema的xml的读写
1. 环境:
1.1 eclipse3.6.2
1.2 jdk 1.6.0.24
1.3 xmlbeans-2.5.0
1.4 Altova XMLSpy 企业版(由大胡子汉化制作)版本2006
2.
2.1 catalog.xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns="http://xmlbeans.apache.org/samples/catalog">
<journal>
<article>
<title>Java programming for high-performance numerical computing</title>
<author>J. E. Moreira et.al.</author>
<a-very-long-description-element>
<forsample>This is a sample element for journal-1</forsample>
</a-very-long-description-element>
</article>
</journal>
<journal>
<article>
<title>Dynamically Binding EJBs Using the Java Reflection API</title>
<author>Douglas A. Clark</author>
<a-very-long-description-element>
<forsample>This document can be found at http://www.cuj.com/documents/s=8467/cujjsup2010clark/clark.htm </forsample>
</a-very-long-description-element>
</article>
</journal>
</catalog>
注意:xmlns="http://xmlbeans.apache.org/samples/catalog" 这个url可以修改,这个会影响后面生成文件的包路径
2.2 获取catalog.xsd
XMLSpy中操作 ;免费的trang不是很好用(cmd:java -jar trang.jar catalog.xml catalog.xsd)
<?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" xmlns="http://xmlbeans.apache.org/samples/catalog" targetNamespace="http://xmlbeans.apache.org/samples/catalog" elementFormDefault="qualified">
<xs:element name="a-very-long-description-element">
<xs:complexType>
<xs:sequence>
<xs:element ref="forsample"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="article">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="author"/>
<xs:element ref="a-very-long-description-element"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="author">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Douglas A. Clark"/>
<xs:enumeration value="J. E. Moreira et.al."/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element ref="journal" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="forsample">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="This document can be found at http://www.cuj.com/documents/s=8467/cujjsup2010clark/clark.htm "/>
<xs:enumeration value="This is a sample element for journal-1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="journal">
<xs:complexType>
<xs:sequence>
<xs:element ref="article"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="title">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Dynamically Binding EJBs Using the Java Reflection API"/>
<xs:enumeration value="Java programming for high-performance numerical computing"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
3.由schema生成xml读写模块
3.1
注意:运行时,这个工程只需xbean.jar;xmlbeanlib下的文件在生成catalog.jar时用到
3.2 build.xml
<!--
* Comment for build.xml
*
* @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
*
* @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
* @version 1.0
* @time 2011-3-23 下午03:42:31
*
-->
<project name="build" default="build">
<target name="init">
<available
property="xmlbeans.lib"
value="../xmlbeanlib"
file="../xmlbeanlib/xbean.jar" />
<echo message="xmlbeans.lib: ${xmlbeans.lib}"/>
<path id="xmlbeans.path">
<fileset dir="${xmlbeans.lib}" includes="*.jar"/>
</path>
<taskdef name="xmlbean"
classname="org.apache.xmlbeans.impl.tool.XMLBean"
classpathref="xmlbeans.path"/>
</target>
<!-- ========================== clean ==== -->
<target name="clean">
<delete dir="../build"/>
</target>
<!-- ========================== build ==== -->
<target name="build" depends="init" >
<mkdir dir="../build/src"/>
<xmlbean schema="../schemas"
destfile="../lib/catalog.jar"
srcgendir="../build/src"
classpathref="xmlbeans.path"
debug="on"
/>
<antcall target="clean"/>
</target>
</project>
注意:xmlbean schema="../schemas" 会自动读取所有schema和xsdconfig,若不是用xsdconfig可直接指定schema文件
3.3 catalog.xsdconfig
<?xml version="1.0" encoding="UTF-8"?>
<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
<xb:namespace uri="http://xmlbeans.apache.org/samples/catalog">
<xb:package>com.yan.dev.xmlbeans</xb:package>
</xb:namespace>
</xb:config>
注意:uri="http://xmlbeans.apache.org/samples/catalog" 包路径 org.apache.xmlbeans.samples.catalog
通过xsdconfig把package -〉com.yan.dev.rmi.service,uri也可以省略
3.4 Test.java
import java.io.File;
import java.io.IOException;
import org.apache.xmlbeans.XmlException;
import com.yan.dev.xmlbeans.CatalogDocument;
import com.yan.dev.xmlbeans.JournalDocument;
/**
* Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
*/
/**
* Comment for Test.java
*
* @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
*
* @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
* @version 1.0
* @time 2011-3-23 下午06:34:05
*/
public class Test {
public static void main(String[] args) {
File xmlfile = new File("xml\\catalog.xml");
try {
CatalogDocument catdoc = CatalogDocument.Factory.parse(xmlfile);
JournalDocument.Journal[] journals = catdoc.getCatalog()
.getJournalArray();
for (JournalDocument.Journal j : journals)
System.out.println(j.getArticle());
} catch (XmlException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意:JournalDocument.Journal[] journals 是数组,受限于 xs:sequence
- 大小: 30.9 KB
分享到:
相关推荐
在“xmlbeans demo”这个主题中,我们主要关注的是如何使用XMLBeans库来处理基于XML Schema的XML数据。首先,你需要有一个XML Schema文件,它定义了XML文档的结构和约束。例如,如果你有一个名为`mySchema.xsd`的XML...
在本文中,我们将深入探讨XMLBEANS的使用,以及在调试过程中可能遇到的问题。 首先,XMLBEANS通过XML Schema编译器(Scomp)将XSD文件转换为Java类,这些类可以被用来实例化和操作XML文档。这使得开发人员能够利用...
XMLBeans是Apache软件基金会开发的一个Java库,它允许开发者通过Java API来操作XML文档。XMLBeans的核心理念是将XML Schema转换为Java类,这样就可以直接在Java程序中以对象的形式处理XML数据,无需手动解析XML字符...
在处理 POI 和 XMLBeans 时,有几点需要注意: 1. **版本兼容性**:确保 POI 和 XMLBeans 版本兼容,因为不同版本之间可能会有 API 的变化。 2. **类路径配置**:正确设置类路径,确保所有必要的 JAR 文件都被包含...
在使用XMLBeans时,有以下几个关键点需要注意: 1. **Schema编译**:首先,你需要使用XMLBeans的`scomp`工具对XML Schema进行编译,生成对应的Java源代码。这些源代码将包含所有Schema定义的类型和元素。 2. **...
赠送jar包:xmlbeans-5.0.3.jar; 赠送原API文档:xmlbeans-5.0.3-javadoc.jar; 赠送源代码:xmlbeans-5.0.3-sources.jar; 赠送Maven依赖信息文件:xmlbeans-5.0.3.pom; 包含翻译后的API文档:xmlbeans-5.0.3-...
赠送jar包:xmlbeans-3.1.0.jar; 赠送原API文档:xmlbeans-3.1.0-javadoc.jar; 赠送源代码:xmlbeans-3.1.0-sources.jar; 赠送Maven依赖信息文件:xmlbeans-3.1.0.pom; 包含翻译后的API文档:xmlbeans-3.1.0-...
XMLBeans是Apache软件基金会开发的一个Java库,它提供了一种高效的方式来处理XML文档,并将XML数据映射到Java对象(POJOs)上。这个库的核心功能在于它能够自动生成Java类,这些类可以直接与XML Schema定义的结构...
XMLBeans是Apache软件基金会开发的一款Java库,它允许开发者直接在Java对象和XML文档之间进行交互。这个压缩包“xmlbeans-bin-3.1.0.tgz”包含了XMLBeans库的3.1.0版本,提供了Java应用程序处理XML数据的强大工具。 ...
xmlbeans-3.1.0.jar包 XMLBeans是一种工具,可让您以Java友好的方式访问XML 的全部功能。 解决 java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException异常
XMLBeans是Apache软件基金会开发的一个Java库,它提供了一种方式来处理XML文档,通过将XML Schema转换为Java类,使开发者能够以面向对象的方式与XML数据进行交互。这个库包含多个组件,如`jsr173_1.0_api.jar`、`...
在实际项目中,结合使用源码分析工具和XmlBeans,可以帮助我们更好地理解和调试XML处理代码,提高开发效率。尽管有一些现代的库,如JAXB和Jackson,提供类似的XML绑定功能,但XmlBeans的独特特性和性能使其在某些...
XMLBeans是Apache软件基金会开发的一款Java库,它提供了一种高效的方式来处理XML文档,通过将XML Schema转换为Java类,使得开发人员可以像操作普通Java对象一样操作XML数据。"xmlbeans-2.5.0.jar"是XMLBeans库的一个...
XMLBeans是Apache软件基金会开发的一款Java库,它允许开发者直接在Java对象模型中操作XML文档。这个库的核心理念是将XML Schema(XSD)转换为Java类,使得开发者可以使用面向对象的方式来处理XML数据,而无需直接...
XMLBeans是Apache软件基金会开发的一个Java库,它允许程序员通过Java API来操作XML文档。在标题"xmlbeans2.6.0"中提到的是XMLBeans的特定版本2.6.0,这通常意味着包含了该版本的所有功能和修复的已知问题。 在描述...
XMLBeans是一种工具,可让您以Java友好的方式访问XML 的全部功能。 解决 java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException异常
在使用XMLBeans 2.0时,开发者需要注意它可能不包含最新的XML Schema特性或性能改进,因此对于新项目,可能会考虑使用更新的XML处理库。然而,对于那些依赖XMLBeans 2.0的旧项目,了解并熟练掌握它的特性和用法至关...
**注意事项** - XMLBeans依赖于特定的Schema,因此,如果你的XML文档没有对应的Schema,那么你可能需要先创建一个。 - XMLBeans生成的Java类可能会很多,这可能导致代码体积增大,对于大型XML Schema,可能会带来...
在"xmlbeans-2.6.0.zip"这个压缩包中,包含了XMLBeans库的版本2.6.0,特别是"xmlbeans-2.6.0.jar"这个文件,它是XMLBeans库的主要组成部分,供Java应用程序使用。 XMLBeans的工作原理基于XML Schema,它通过编译XML...
XMLBeans是Apache软件基金会开发的一款Java库,它允许开发者以编程方式访问和操作XML文档,同时将XML数据绑定到Java对象。XMLBeans 2.3.0是该库的一个版本,提供了对XML Schema的全面支持,使开发人员能够直接与符合...