JavaXML绑定技术样本

合集下载

JaxbContext生成xml文件或java类对象转化注解

JaxbContext生成xml文件或java类对象转化注解

JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换。

在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB。

JAXB 可以实现Java对象与XML的相互转换,在JAXB中,将一个Java对象转换为XML 的过程称之为Marshal,将XML转换为Java对象的过程称之为UnMarshal。

我们可以通过在Java 类中标注注解的方式将一个Java对象绑定到一段XML,也就是说,在Java类中标注一些注解,这些注解定义了如何将这个类转换为XML,怎么转换,以及一段XML如何被解析成这个类所定义的对象;也可以使用JAXB的XJC工具,通过定义schema的方式实现Java 对象与XML的绑定(这个下次研究)。

下面来了解一下如何通过标注注解来完成 Marshal 和 UnMarshal 的过程。

我用的是JAXB2_20101209.jar ,可以到[url]/[/url] 下载最新版本。

首先看个小例子定义一个java类Java代码package com.why.jaxb;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic class People {public String id = "001";public String name = "灰太狼";public int age = 26;}Java To XML(Marshal)Java代码package com.why.jaxb;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;public class Java2XML {/*** @param args* @throws JAXBException*/public static void main(String[] args) throws JAXBException {JAXBContext context = JAXBContext.newInstance(People.class);Marshaller marshaller = context.createMarshaller();marshaller.setProperty(Marshaller.JAXB_ENCODING,"gb2312");//编码格式marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//是否格式化生成的xml串marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);//是否省略xml 头信息(<?xml version="1.0" encoding="gb2312" standalone="yes"?>)People people = new People();marshaller.marshal(people, System.out);}}XML To Java(UnMarshal)Java代码package com.why.jaxb;import java.io.File;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Unmarshaller;import org.xml.sax.SAXException;public class XML2Java {/*** @param args* @throws JAXBException* @throws JAXBException* @throws SAXException*/public static void main(String[] args) throws JAXBException {JAXBContext context = JAXBContext.newInstance(People.class);Unmarshaller unmarshaller = context.createUnmarshaller();File file = new File("src/people.xml");People people = (People)unmarshaller.unmarshal(file);System.out.println(people.id);System.out.println();System.out.println(people.age);}}其实Marshal 和UnMarshal的过程并不复杂,只需要从JAXBContext中获得Marshaller或Unmarshaller对象,就可以让JAXB帮我们来进行转换了。

第7章 XML编程技术

第7章 XML编程技术
严格要求嵌套、配对, 并遵循DTD的树形结 构 结构清晰,便于阅读、 维护 内容描述与显示方式 相分离 具有保值性 编辑、浏览工具尚不 成熟
可读性及可维护性 数据和显示的关系 保值性 编辑及浏览工具
XML文档的结构

案例名称:元标记语言 程序名称:9-01.xml
<?xml version="1.0" encoding="gb2312"?> <老师> <姓名>zhourunfa</姓名> <性别>male</性别> <职业>Teacher Peking Univ.</职业> </老师>

内部DTD (例子) 外部DTD
<?xml version = "1.0" encoding="GB2312" standalone = "yes"?> <!DOCTYPE 联系人列表[ <!ELEMENT 联系人列表 (联系人)*> <!ELEMENT 联系人 (姓名,ID,公司,EMAIL,电话,地址)> <!ELEMENT 地址 (街道,城市,省份)> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT ID (#PCDATA)> <!ELEMENT 公司 (#PCDATA)> <!ELEMENT EMAIL (#PCDATA)> <!ELEMENT 电话 (#PCDATA)> <!ELEMENT 街道 (#PCDATA)> <!ELEMENT 城市 (#PCDATA)> <!ELEMENT 省份 (#PCDATA)> ]> <?xml-stylesheet type="text/xsl" href="mystyle.xsl"?> <联系人列表> <联系人> <姓名>张三</姓名> <ID>001</ID> <公司>A公司</公司> <EMAIL>zhang@</EMAIL> <电话>(010)62345678</电话> <地址> <街道>五街1234号</街道> <城市>北京市</城市> <省份>北京</省份> </地址> </联系人> </联系人列表>

应用JAVA-XML绑定技术开发网络教学平台

应用JAVA-XML绑定技术开发网络教学平台

<xs c mp e d:o lxTym a =” n t to l n me a no a inT— yp e” mi d=” r xe t ue’ > <xs s qu nc > d: e e e <xs e e e r f ” r on” d: l m nt e = pe s
维普资讯
20 0 7年 1 0月 第 l卷第 5 1 期
宁 波 职 业 技 术 学 院 学 报
J u n l o Nig o o r a f n b Poye h ltc n J
O C ,2 7 t 00
、 .1 b11 NO- 5
应用 J VA— ML绑定技术开 发 网络教学平 台 A X
辛 向丽 ,郭
(. 1 北京 政 法职 业 学 院 计算 机 系,北 京

1 14 ) 19 0
1 02 ; . 京物 资 学院 信 息 学 院 ,北 京 0 42 北 0
摘 要 : 网络教 学平 台 W bor td 的 开 发过 程 中 ,应 用 基 于 Cs r J V — M 在 eOu eSuo s i &t 的 A A X L数据 绑 定技 术 ,开 发 了 o SO M X L 口库 , 用J V 对 象直 接 访 问共 享 内容 对 象参照 模 型 ( O M 的 元 数据 X L Cg — M 接 使 AA S B) C M 文件 , 克服 了传 统 X L M 接 口的 复杂 性 ,有 利 于 SO M规 范在 网络教 学平 台 中 的 实现 。 CB
<Xs e em e r f ” d: l nt e = dat e’
a nOc ur = 0 ri c s />
收稿 日期 :0 7 0 — 8 2 0 — 6 2 作者简介 : 向丽(9 4 ) 辛 1 7 一 ,女,内蒙古赤峰人 ,讲师 ,硕士 ,研 究方 向为现代远程教 育。

JAVA写xml文件

JAVA写xml文件

JAVA写xml文件随着计算机技术的飞速发展,需要在程序中存储和管理大量的信息,并用众多的语言和工具进行交互。

为了解决这个问题,以及为不同的程序语言提供一致的格式来实现数据交换,XML(超文本标记语言)应运而生,并在软件开发中得到广泛运用。

XML用来描述数据的一种文本语言,它可以存储比如用户及其信息,设置,排列,及其他数据的内容。

XML在许多计算机程序中被广泛使用,它可以被用来传递数据,或者以XML标记格式存储信息。

尽管XML可以使用任何编程语言来解析,但是其最常见的用法是使用Java来写。

接下来我们就使用Java来写XML文件,具体步骤如下:第一步:准备好XML文件所需要的相关信息。

第二步:导入Java标准包(javax.xml.parsers.*)。

第三步:实例化DocumentBuilderFactory。

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();第四步:使用builderFactory来实例化DocumentBuilder。

DocumentBuilder builder =builderFactory.newDocumentBuilder();第五步:使用DocumentBuilder来创建文档并且添加元素。

Document document = builder.newDocument();Element rootElement = document.createElement(rootdocument.appendChild(rootElement);第六步:添加属性并写入XML文件。

Element nameElement = document.createElement(amenameElement.setTextContent(EarthrootElement.appendChild(nameElement);Element sizeElement = document.createElement(sizesizeElement.setTextContent(largerootElement.appendChild(sizeElement);TransformerFactory transformerFactory = TransformerFactory.newInstance();Transformer transformer =transformerFactory.newTransformer();DOMSource source = new DOMSource(document);StreamResult result = new StreamResult(newFile(file.xml);transformer.transform(source, result);以上是Java写入XML文件的实例,从上面可以看出JAVA语言是一种非常强大的程序语言,它结合XML技术,可以用来实现大量复杂的数据存储和交互。

jaxbcontext字符串转xml方法

jaxbcontext字符串转xml方法

jaxbcontext字符串转xml方法【最新版3篇】篇1 目录1.JAXBContext 简介2.字符串转 XML 的实现方法3.示例代码篇1正文1.JAXBContext 简介JAXB(Java Architecture for XML Binding)是 Java 中的一种用于将 Java 对象转换为 XML 格式,以及将 XML 格式转换为 Java 对象的技术。

在 JAXB 中,JAXBContext 是一个非常重要的类,它用于创建和配置 JAXB 实现。

JAXBContext 通过 unmarshal 方法可以将 XML 格式的数据转换为 Java 对象,通过 marshal 方法可以将 Java 对象转换为XML 格式的数据。

2.字符串转 XML 的实现方法要实现字符串转 XML 的功能,我们可以通过以下步骤:(1)创建一个 Java 类,该类的属性与目标 XML 结构相对应。

(2)使用 JAXBContext 的 unmarshal 方法将 XML 字符串转换为Java 对象。

(3)使用 JAXBContext 的 marshal 方法将 Java 对象转换为 XML 字符串。

3.示例代码下面是一个简单的示例,展示了如何使用 JAXBContext 将字符串转换为 XML:```javaimport javax.xml.bind.JAXBContext;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller;import java.io.StringReader;import java.io.StringWriter;public class JAXBContextStringToXML {public static void main(String[] args) {String xmlString = "<?xml version="1.0" encoding="UTF-8"?>"+ "<学生>"+ "<姓名>张三</姓名>"+ "<年龄>20</年龄>"+ "</学生>";JAXBContext jaxbContext =JAXBContext.newInstance(Student.class);try {// 将字符串转换为 Java 对象Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();Student student = (Student) unmarshaller.unmarshal(new StringReader(xmlString));// 将 Java 对象转换为 XML 字符串Marshaller marshaller =jaxbContext.createMarshaller();StringWriter stringWriter = new StringWriter();marshaller.marshal(student, stringWriter);System.out.println("转换后的 XML 字符串:" + stringWriter.toString());} catch (Exception e) {e.printStackTrace();}}}```在这个示例中,我们首先创建了一个名为 Student 的 Java 类,该类包含姓名和年龄两个属性。

基于JAVA+XML技术的通用非银行征信信息采集系统建设方案

基于JAVA+XML技术的通用非银行征信信息采集系统建设方案
图1 系统 流程 图
同部 门采用的数据库产品存 在差异 , 不同部 门使用 的
大 型 关 系 型数 据 库包 括 O A L , B B , S L R C E IM D 2 MS Q , S B S 等几种 产品 。 YAE 1 异 性解 决 方 案 . 差
( ) 二 使用X 定义非银行类数据采集项 ML
分 析 , 同 的非银 行 信息可 以抽象 出一 个共 同 的逻辑 流 不 程 , 同接 I规范 能够 建 立 通 用 的数 据模 型。 不 Z l 利用 现 有
X 标准化建模技 术能够定义 通用的接口规范数据模 ML 型。 另外,A A J V 技术作为总行开发指引推崇的开发语言 提供方便的X 交互机制, ML 为通用性 的春丽 E m a : n li0 @ l 3C r - ii giS 5 6 o a z r l n
通过笔者的调研 以及对不 同类别非银行信息接 口 规范的研究, 并针对不同类别非银行信息采集的流程 、
数据源、 中间处理过程 、 出报 文等各 个环节进行综合 输
数 据 库 的特 点 ( 括 数 据 库 产 品 及数 据 库 结 构 ) 制作 包 , 可视 化 的数 据 采集 模 板 。 何 对 报 文 接 口规 范 中要 求 如
更能满足跨平台的要求 。 同样, 不同的操作系统也为系 统使用 的数据库 的选择带来一定难度 , 而现在流行 的 数据库产品不能满足多种平 台的要求 。 具有简单 存储 功能 的可扩展标 记语言 ( L , 用一系列简单 的标 XM ) 使 记描述数 据, 可以更容易地与不同操作系统及其他平台
以及两级数据 中心的建设方 向和 信管理 局关于信息
数 据 由 省会 巾心支 行 集 中报 送 的要 求 , 立 一 个 统 一 建

jaxbelement格式 -回复

jaxbelement格式 -回复

jaxbelement格式-回复JAXBElement格式简介:JAXB(Java Architecture for XML Binding)是一个Java的XML绑定技术,它允许将XML数据与Java对象进行无缝转换。

在JAXB中,JAXBElement是一个用于包装XML元素的类,它允许在绑定过程中处理XML中的元素和属性。

一、什么是JAXBElement格式?JAXBElement是JAXB中的一个类,用于表示XML元素及其属性。

在JAXB 中,XML元素由一个Java类表示,这个类可以包含子元素、属性和值。

JAXBElement提供了对这些包装XML元素的支持,并且可以帮助在XML 和Java对象之间进行转换。

二、JAXBElement的使用方法1. 创建一个JAXBContext对象:首先,需要创建一个JAXBContext对象,以便在转换过程中找到所需的Java类和XML元素。

2. 创建一个Unmarshaller对象:Unmarshaller对象用于从XML中读取数据并将其转换为Java对象。

3. 创建一个JAXBElement对象:JAXBElement类有两个参数,第一个参数是要包装的对象类型,第二个参数是XML元素的类型。

根据XML文档的结构,可以创建一个或多个JAXBElement对象。

4. 使用Unmarshaller对象将XML转换为JAXBElement对象:使用Unmarshaller对象的unmarshal方法,将XML数据输入并将其转换为JAXBElement对象。

5. 通过getValue()方法获取XML元素的值:一旦将XML转换为JAXBElement对象,可以使用getValue()方法获取XML元素的值。

6. 对JAXBElement对象进行操作:可以通过JAXBElement对象的getDeclaredType()方法获取XML元素的类型。

还可以使用getValue()方法获取XML元素的值,并对其进行操作。

基于Java与XML的测井矢量图形处理技术

基于Java与XML的测井矢量图形处理技术

本组成元素 ( 每一 个道就表示一种属性 ) 道元素 由段元素组 , 成, 段元素拥 有。段的显 示 内容分 曲线 、 字 、 文 图片 、 填充 区域
地层 的岩性 、 电阻率 、 自然 电位 、 吸水性 、 / C O比等 特性 , 通过 这些 特性 可以判断地 层 中的含 油情 况。为 了能直 观地 表达
Ke wo d J v XML Grp fw l lg i g Ve tr r p fwellg ig y r s aa a ho el ogn co g a h o l o gn
1 引 言
在 油 田 测 井 过 程 中有 大 量 的 数 据 产 生 , 这些 数 据 反 映 了
soi g a v c o ga h o e l o g n i n XML f e tr e t r rp fw l l g i g w t a n h l .Th n t esr cu e o i id o i e h t tr ft sk n fXML f e,te p o e u e u h l h rcd r i o sc e t n a d te p o e so p o u ig lg i g v co g a h b n XML f e w r r vd d fi r a i n r c s f e r cn o n e tr p y a t o h r d r l e e p o ie .An XML f eWa i l s i c e td f m h r cia x mpe r ae r t e p a t le a l .T e eo e,t e v co ga h o e l o g n s g n r td f m o c h r fr h e t rr p fw l l g i g wa e e ae r o XML f e l. i
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java XML绑定技术--- 快速操作XML文档注: 本文系原创, 转载请注明作者 -------- 叶瑞金 /06/10在开发中, 我们常见XML来存储一些数据。

相对于普通的文本文件, XML具有开放性、支持多语言编码、支持结构性数据等优越性, 我们常见它存储配置信息, 甚至直接使用它当作数据库使用。

最近由于项目需要, 我对Java XML绑定技术作了些研究, 现在把一些心得与大家分享一下。

其实用Java读写XML的技术由来已久, 比如Apache的XML API、 xalan、xerces都是很出名的项目, 都有将近十多年历史了吧。

这些API对XML的操作都是基于XML最底层的DOM和SAX模式, 原来也不算很复杂。

我在以前项目中很多关于配置文件的管理部分都是用这些API来完成的。

但不论是用DOM还是SAX,都要求XML的格式是预先定义好的。

也就是说, 如果你已经写好了一份读写XML的程序, 之后如果这个XML的格式作了修改, 那么你必须修改程序, 以保证能够正确地从修改后的XML中读写数据。

如果XML的格式很复杂, 或者牵涉的XML文件类型众多, 那么这种修改将是一个浩大的工程。

如果我们能找到一种自动适应XML格式的方法, 能够根据当前XML的格式定义, 自动地读写XML中的数据, 那么就能够节省我们很多精力和时间。

能够把这种技术称为XML绑定技术(XML Binding), 或者称为Object XML。

真的有这样的程序或框架吗?我们能够用下面的图示来描述Java XML绑定技术:Person <----------------------------> <Person>|----- id<----------------------------> <id>123</id>|___ name<----------------------------> <name>tom</name></Person>使用这种绑定技术能够在Java对象和XML文档之间自由地转换。

比如你能够把一个XML文件转换成Java对象, 然后你读取Java对象中的数据, 实际上就是读取XML文档中的数据。

或者当你把数据放入Java对象时, 实际上是在更新XML文档。

对于Java开发人员而言, 有了这种绑定技术, 你面正确不再是繁琐的XML文档, 而是操作快捷的Java对象。

这样是不是方便很多呢?现在确实已经有一些能够完成这个任务的优秀框架。

比如: JAXB、 XMLBeans、Castor等等。

我最早接触的就是Castor( 大约是就有了Castor 0.9版) 。

Castor本身是一个开源的JDO框架。

它的配置文件都是用XML定义的。

为了能够使配置文件更加灵活, 它的设计者实现了XML<---->Java Bean的绑定技术。

它主要用于快速从XML读取JDO的配置信息。

但它所采用的绑定方式不太好用, 开发者不能自己定义XML格式, 必须由Castor自己生成。

在使用Castor XML时, 开发者先定义好要绑定的Java Bean程序, 然后运行Castor的命令行程序, 生成对应的XML的定义。

用户不能自行定义或修改XML的定义, 是Castor的一大缺陷。

不过对于Castor的目标来说, 这不算什么, 因为它原来就不是为了做XML绑定而产生的。

因为这个原因, Castor XML绑定技术并没有得到广泛应用。

但有一点能够肯定的是, Castor能够在JDK 1.3上完成XML的绑定操作, 这是其它的几种框架都不能做到的。

相比Castor而言, JAXB和XMLBeans都是比较新的框架, 更加灵活, 已经能够根据用户自定义的XML来产生对应的读写程序。

在使用前用户需要先定义好XML的格式信息, 并把这些信息保存在XSD文件中(XSD也是一种XML文件, 专门用于定义XML的格式)。

然后, 用户执行由框架提供的命令行程序, 生成相应的读写程序。

之后, 用户就能够使用生成的程序来操纵XML了。

典型的XSD文件如下所示:<?xml version="1.0" encoding="UTF-8"?><xs:schema targetNamespace=""xmlns:xs=""xmlns:tns=""><xs:complexType name="PersonType"><xs:sequence><xs:element name="id"type="xs:string" minOccurs="0" maxOccurs="1"/><xs:element name="name"type="xs:string" minOccurs="0" maxOccurs="1"/></xs:sequence></xs:complexType><xs:element name="Person" type="tns:PersonType"/></xs:schema>这个XSD文件首先定义了一个PersonType数据类型, 它具有两个字符串类型的属性: id和name。

接下来, 定义XML文档中只有一个数据项, 那就是Person, 它的数据类型就是上面已经定义的PersonType。

根据上面的定义, 那么一个XML文档的内容必须符合下面的形式:<?xml version="1.0" encoding="UTF-8"?><Person><id>123</id><name>tom</name></Person>JAXB或XMLBeans会根据XSD对XML文档进行检查, 如果XML文档符合XSD 中定义的格式, 那么就将它解析出来。

但这两种框架的处理方式还是有所区别的。

最主要的区别在于, XMLBeans 包含了XML解析器部分, 而JAXB则没有包含。

JAXB是由Sun推出的一种绑定标准, 是基于JDK1.5以上版本设计的。

它本身并不提供XML的解析功能, 而是由JDK其它模块来辅助完成XML的操作。

因此用它生成的程序没有解析器部分。

用户只要把生成的源代码包含到工程中, 就能够实现对XML的操作。

XMLBeans中包含了XML解析器部分, 使用它来对XML文档进行解析之前, 先要用它分析XSD文件, 然后它会生成一个用于解析XML文档的jar包。

这个jar 包中包含了XML文档的解析器。

用户在使用XMLBeans对XML文档进行解析时, 必须在CLASSPATH中导入这个jar包。

在实际使用中, 本人觉得使用JAXB更加方便, 毕竟它是已经与JDK整合的东西, 用起来更加顺手。

下面我重点来谈谈JAXB的使用方法及应用。

在我最近的项目中, 客户希望能够把测试系统中的数据迁移到正式环境中。

但又不能把正式环境中的数据整个冲掉, 只能作增量重新。

即只修改有变化的部分。

而且用户能够选择要更新的内容。

因为我们无法知道目标数据库中的数据情况, 因此我们不能采用SQL方式保存要导入或导出的数据。

在这个功能开发中, 为了能够方便地查看导入或导出的数据, 因此我们希望用文本格式来保存数据。

但普通的文本文件又无法保证没有乱码的问题。

因此为了方便数据导入导出, 我设计用XML的形式来保存要导入或导出的数据。

这个功能涉及的数据库表非常多, 如果直接用DOM4J解析XML文档, 那确实是一件痛苦的事情。

于是我决定使用JAXB技术。

我把所有的需要导出的数据结构定义到XSD文件中( 假设XSD文件名为crcdata.xsd) :<?xml version="1.0" encoding="UTF-8"?><xs:schema targetNamespace=""xmlns:xs=""xmlns:tns=""><!-- Base Type --><xs:complexType name="CodeLangue"><xs:sequence><xs:element name="clCdCl"type="xs:string" minOccurs="0" maxOccurs="1"/><xs:element name="clLibCl"type="xs:string" minOccurs="0" maxOccurs="1"/><xs:element name="clSeparateurmilleCl"type="xs:string" minOccurs="0" maxOccurs="1"/><xs:element name="clSeparameurdecimalCl"type="xs:string" minOccurs="0" maxOccurs="1"/><xs:element name="clSeparateurcsv"type="xs:string" minOccurs="0" maxOccurs="1"/></xs:sequence></xs:complexType>...<xs:complexType name="CodeLangueList"><xs:sequence><xs:element name="CodeLangue"type="tns:CodeLangue"minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType>...<xs:complexType name="AllData"><xs:sequence><xs:element name="CodeLangueList"type="tns:CodeLangueList" minOccurs="0" maxOccurs="1"/></xs:sequence></xs:complexType><xs:element name="AllDatas" type="tns:AllData"/></xs:schema>在这个XSD文件中, 我定义的数据结构如下:AllData|_______ CodeLangueList|_____________ CodeLangue这里只以CodeLangue为例, 在AllData中列出它的List。

相关文档
最新文档