`

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,使得开发者能够快速地创建和部署...

    xml快速入门

    ### XML快速入门知识点详解 #### 一、XML基础概述 **XML**(Extensible Markup Language,可扩展标记语言)是一种用于标记数据的通用标准,它允许开发者定义自己的标记语言,从而使得数据更具描述性和结构化。与...

    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