`

JAXB入门

 
阅读更多
引用
jaxb是一个读写xml的工具,还可以提供验证,不需要额外的jar


1. XSD sample
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org/draft_2/"
	targetNamespace="http://www.example.org/draft_2/">

	<xs:complexType name="BaseCommonRefCType">
		<xs:sequence>
			<xs:element name="name">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1" />
						<xs:maxLength value="64" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="type" maxOccurs="1"
						minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1" />
						<xs:maxLength value="64" />
						<xs:enumeration value="filter" />
						<xs:enumeration value="nzload" />
						<xs:enumeration value="db_system" />
											<xs:enumeration value="repetition_group" />
						<xs:enumeration value="system_path" />
						<xs:enumeration value="record" />
						<xs:enumeration value="report" />
						<xs:enumeration value="mapping" />
						<xs:enumeration value="table" />
						<xs:enumeration value="cob" />
						<xs:enumeration value="file_container" />
						<xs:enumeration value="node" />
						<xs:enumeration value="instance" />
						<xs:enumeration value="stage" />
						<xs:enumeration value="java_config" />
						<xs:enumeration value="business_date" />
						<xs:enumeration value="matrix" />
						<xs:enumeration value="database" />
						<xs:enumeration value="file_pattern" />
						<xs:enumeration value="gemfire_region" />
						<xs:enumeration value="task" />
						<xs:enumeration value="config_file" />
						<xs:enumeration value="dataflow" />
						<xs:enumeration value="ems" />
						<xs:enumeration value="workflow" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>

		</xs:sequence>
	</xs:complexType>
</xs:schema>


2. 根据xsd生成java类
xjc -p com.wilson test.xsd -d   src



3. Sample class for retrieving classes from xml
public class JAXBUtil {
	private static final Log logger = LogFactory.getLog(JAXBUtil.class.getName());

	public static YourClass retrieveObjectFromXML(File xml, URL xsdURL) {
		ProcessLifeCycle lifeCycle = null;
		JAXBContext jaxbContext;
		ValidationEventCollector vec = new ValidationEventCollector();

		try {
			jaxbContext = JAXBContext.newInstance(YourClass.class);
			Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
			
			

			
			unmarshaller.setSchema(SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(xsdURL));
			unmarshaller.setEventHandler(vec);
			lifeCycle = (ProcessLifeCycle) unmarshaller.unmarshal(xml);

		} catch (JAXBException e) {
			logger.error("", e);
		} catch (SAXException e) {
			logger.error("", e);
		} finally {
			if (vec != null && vec.hasEvents()) {
				for (ValidationEvent ve : vec.getEvents()) {
					String msg = ve.getMessage();
					ValidationEventLocator vel = ve.getLocator();
					int line = vel.getLineNumber();
					int column = vel.getColumnNumber();
					throw new RuntimeException("Can't unmarshal the XML file, error message: " + " At line " + line + ", column " + column + ": "
							+ msg);
				}
			}
		}
		return lifeCycle;
	}
}
分享到:
评论

相关推荐

    jaxb入门学习

    ### Jaxb入门学习知识点详解 #### 一、JAXB概念与作用 JAXB (Java Architecture for XML Binding) 是一种将XML数据与Java对象互相转换的技术。它通过编组(marshalling)和解组(unmarshalling)的过程,使得开发者...

    XML JAXB入门示例

    JAXB(Java Architecture for XML Binding)是Java平台标准中的一个部分,它提供了一种将Java对象和XML文档之间进行互相转换的机制。通过JAXB,开发者可以方便地在Java对象和XML之间进行序列化和反序列化操作,极大...

    JAXB入门学习(五)

    NULL 博文链接:https://popomonkey.iteye.com/blog/688580

    JAXB实例入门

    **JAXB实例入门** Java Architecture for XML Binding (JAXB) 是Java平台中用于XML和Java对象之间进行绑定的一个标准框架。它允许开发者在Java类和XML文档之间进行无缝转换,大大简化了XML数据的处理。在本文中,...

    用JAXB生成一个XML

    ### 使用JAXB生成XML文档详解 #### 一、前言 在现代软件开发过程中,XML(可扩展标记语言...需要注意的是,在实际应用中可能还需要考虑更多的细节和异常处理,但本文所介绍的基础知识已经足够让你入门并开始实践了。

    JAXB简易教程

    此教程旨在为开发人员和系统维护人员提供一个快速入门的指南,帮助他们理解和使用JAXB的基本功能。 **2. 开发指南** **2.1 导入JAXB** 在Java项目中使用JAXB,首先需要添加对应的依赖。如果你使用的是Maven,可以...

    JAXB资料集.rar

    "JAXB的使用入门"这部分资料可能是引导读者逐步了解如何开始使用JAXB。通常,使用JAXB的步骤包括以下几个关键点: 1. **创建Java模型类**:根据XML Schema定义,创建相应的Java类,使用JAXB注解来标记字段与XML元素...

    JiBx开发入门指南

    JiBx又一个不错的xml绑定工具,和jaxb等一样,都是属于xml绑定工具。而JiBx使用java字节码enhance技术,不像jaxb等更多在于源代码生成技术。JiB的工作主要在于前期,也就是进行字节码绑定,这一部分基本上都是在...

    jaxbRss:RSS对象的JAXB绑定

    2. **快速入门**:简单示例展示如何创建和操作RSS对象,以及如何进行编组和取消编组。 3. **API参考**:详细说明项目的类、接口、方法等,供开发者查阅。 4. **示例代码**:展示不同场景下的应用实例,如解析RSS ...

    Docx4J入门指南(英文)

    Docx4J的官方入门指南是英文版本,但时不时会进行机器翻译成其他语言。Docx4J遵循Apache License 2.0,这意味着您可以自由使用并根据需要修改该库,而无需支付费用。作为对社区贡献的回报,如果Docx4J帮助了您,...

    Docx4j入门指南

    Docx4j使用JAXB(Java API for XML Binding)在内存中构建文档的表示形式,这有助于Java开发者更方便地处理Office文档。 Docx4j的主要特点包括: - 支持操作Word(.docx)、PPT(.pptx)和Excel(.xlsx)文件 - 允许从...

    RESTEasy入门经典.docx

    RESTEasy与JAXB(Java Architecture for XML Binding)紧密集成,JAXB允许你将XML文档与Java对象互相转换,极大地简化了数据交换。在RESTEasy中,你可以直接使用JAXB注解来处理XML数据,比如在`UserType`类中使用`@...

    Java网络编程从入门到精通

    9. **网络数据编码和解码**:例如JSON和XML的序列化和反序列化,Java提供了JSON-P和JSON-B以及JAXB来处理这些格式。 10. **网络调试和性能调优**:使用网络工具如Wireshark进行网络包捕获和分析,以及使用JDK的JMX...

    cxf入门例子

    8. **扩展与插件**:CXF有许多可扩展的特性,比如支持MTOM(Message Transmission Optimization Mechanism)和SwA(SwA: SOAP with Attachments),以及各种数据绑定机制如JAXB和XMLBeans。 9. **调试与日志**:CXF...

    cxf入门文档

    6. **数据绑定**:JAXB(Java Architecture for XML Binding)的使用,将XML与Java对象映射,简化数据交换。 7. **客户端调用**:如何创建CXF客户端,调用远程Web服务。 8. **安全与认证**:理解WS-Security,学习...

    WebService&SOA&ESB入门介绍(手把手xfire开发WS入门实例)

    XFire 1.x提供了一个简单易用的API,支持SOAP、WSDL和JAXB。Axis 1.x/2.x也是流行的Web Service开发工具,它包含了更多的功能和对不同版本SOAP的支持。 【AJAX】 AJAX(Asynchronous JavaScript and XML)是Web开发...

    Web Service修炼之一XFire入门3

    在本文中,我们将聚焦于XFire——一个早期的Java Web Service框架,来探讨如何入门Web Service的开发。 XFire是Apache CXF项目的一部分,它提供了一个轻量级、高效且易于使用的API,使得开发者能够快速地创建和部署...

    CXF 2.3 集成Spring3.0入门 HelloWorld

    标题 "CXF 2.3 集成Spring3.0入门 HelloWorld" 指向的是一个关于如何在Java项目中使用Apache CXF 2.3版本与Spring 3.0框架进行集成的教程,特别是通过一个简单的"Hello World"应用来演示这个过程。Apache CXF是一个...

    Web Service 之 XFire入门

    这篇博客文章“Web Service 之 XFire入门”将引导我们逐步了解如何使用XFire构建Web服务。 首先,XFire基于Java语言,利用了Java API for XML Processing (JAXP) 和Java Architecture for XML Binding (JAXB) 这些...

Global site tag (gtag.js) - Google Analytics