- 浏览: 184808 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
yu505656166:
这个问题是怎么解决的啊?
spring mail 发送邮件,没有主题,没有收件人,显示乱码问题 -
dextersmake:
我的配置和你的差不多,调了有一些效果,但是还不是很满意。
YARN内存使用优化配置 -
kjkhi:
dxb350352 写道怎么用啊,运行完了也不知道取值的方法 ...
Apache POI组件使用eventusermodel模式读取Excel文档内容 -
dxb350352:
怎么用啊,运行完了也不知道取值的方法
Apache POI组件使用eventusermodel模式读取Excel文档内容 -
wanshijian:
相同问题,解决了!
使用cxf的wsdl2java是遇到的问题
JAXB(Java Architecture for XML Binding)是一种特殊的序列化/反序列化工具。它可以使XML数据以Java Objects的形式直接应用于Java程序之中,使Java Objects与XML数据之间的转换成为可能。在JAXB中将Java Objects到XML数据的转换称为marshal;XML数据到Java Objects的转换称为unmarshal。
使用JAXB分两步,首先利用xjc命令行程序编译DTD或Schema文件生成与XML数据结构相对应的JavaBeans类,再通过JAXB API中的marshal与unmarshal操作完成JavaBeans对象与XML数据之间的互换。
JAXB使用了最新的元数据技术,故而只能在JDK 1.5以上版本使用,JAXB的官方网站如下:
1. 通过命令行编译
命令行程序xjc用于编译DTD或Schema生成与XML数据结构对应的JavaBeans类。操作方法如下:
-xmlschema 指定编译文件的格式为Schema格式,此参数是默认值,可以不用提供。
如果不提供此参数,编译文件必须是Schema文件。
-dtd 指定编译文件的格式为DTD格式,如果编译文件是DTD文件则必须提供此参数。
-d 指定了保存java文件的目录
-p 指定了生成的java文件所在的包
例如编译当前目录下的schema.xls文件,java文件保存在src目录,包名为generate,其命令如下:
xjc –d src –p generate schema.xsd
如果编译文件是schema.dta,则命令如下:
xjc –dtd –d src –p generate schema.dtd
2. 通过ANT编译
在/JAXB-HOME/lib目录中的jaxb-xjc.jar包中包含了XJCTask.class文件,可以依据该类定义一个ant task,通过执行该task生成java文件,这种方法我暂时没有测试!
其中我测试了一个比较复杂的xml文件,其xsd文件如:
这个目标期望可以生成的类有:ShippingOder,GoodsInformation,ConsigneeInformation和ConsignorInformation
但测试生成的类有除了上面那四个外,还有三个:package-info,ObjectFactory,ArrayOfGoodsInfomation
如ShippingOrder这个类中部分代码如下:
使用JAXB分两步,首先利用xjc命令行程序编译DTD或Schema文件生成与XML数据结构相对应的JavaBeans类,再通过JAXB API中的marshal与unmarshal操作完成JavaBeans对象与XML数据之间的互换。
JAXB使用了最新的元数据技术,故而只能在JDK 1.5以上版本使用,JAXB的官方网站如下:
- https://jaxb.dev.java.net/
1. 通过命令行编译
命令行程序xjc用于编译DTD或Schema生成与XML数据结构对应的JavaBeans类。操作方法如下:
xjc [-xmlschema|-dtd] [–d 保存java文件的目录] [–p java文件所在的包] <编译文件>
-xmlschema 指定编译文件的格式为Schema格式,此参数是默认值,可以不用提供。
如果不提供此参数,编译文件必须是Schema文件。
-dtd 指定编译文件的格式为DTD格式,如果编译文件是DTD文件则必须提供此参数。
-d 指定了保存java文件的目录
-p 指定了生成的java文件所在的包
例如编译当前目录下的schema.xls文件,java文件保存在src目录,包名为generate,其命令如下:
xjc –d src –p generate schema.xsd
如果编译文件是schema.dta,则命令如下:
xjc –dtd –d src –p generate schema.dtd
2. 通过ANT编译
在/JAXB-HOME/lib目录中的jaxb-xjc.jar包中包含了XJCTask.class文件,可以依据该类定义一个ant task,通过执行该task生成java文件,这种方法我暂时没有测试!
其中我测试了一个比较复杂的xml文件,其xsd文件如:
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="ShippingOrder"> <xs:sequence> <xs:element minOccurs="0" name="acceptTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="agencyPrice" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="billId" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="billingPersonName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="branchName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="chargeType" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="checkTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="consigneeCardNO" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="consigneeInfomation" nillable="true" type="tns:ConsigneeInfomation" /> <xs:element minOccurs="0" name="consigneeName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="consigneeSignName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="consignorInfomation" nillable="true" type="tns:ConsignorInfomation" /> <xs:element minOccurs="0" name="consignorName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="endStationName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsInfomations" nillable="true" type="tns:ArrayOfGoodsInfomation" /> <xs:element minOccurs="0" name="isInsurance" type="xs:boolean" /> <xs:element minOccurs="0" name="isRouteRecord" type="xs:boolean" /> <xs:element minOccurs="0" name="labelId" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="limitTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="packageBillId" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="prepayPrice" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="procedureCharge" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="remark" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="route" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="routePersonName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="sendStationName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="stationName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="totalCharge" type="xs:float" /> <xs:element minOccurs="0" name="totalCount" type="xs:int" /> <xs:element minOccurs="0" name="totalWeight" type="xs:float" /> <xs:element minOccurs="0" name="transferName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="travelTime" type="xs:dateTime" /> </xs:sequence> </xs:complexType> <xs:element name="ShippingOrder" nillable="true" type="tns:ShippingOrder" /> <xs:complexType name="ConsigneeInfomation"> <xs:sequence> <xs:element minOccurs="0" name="addressTel" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="consigneeCode" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="consigneeUserID" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="consignmentStatus" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="gatheringAmount" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="gatheringType" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsReceiptPlace" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="isReturn" type="xs:boolean" /> <xs:element minOccurs="0" name="linkManName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="originalEnterprise" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="originalNumber" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="remark" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="requestedUnloadedDateTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="telephoneNumber" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="ConsigneeInfomation" nillable="true" type="tns:ConsigneeInfomation" /> <xs:complexType name="ConsignorInfomation"> <xs:sequence> <xs:element minOccurs="0" name="addressTel" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="consignorCode" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="linkManName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="loadingPlace" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="telephoneNumber" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="ConsignorInfomation" nillable="true" type="tns:ConsignorInfomation" /> <xs:complexType name="ArrayOfGoodsInfomation"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="GoodsInfomation" nillable="true" type="tns:GoodsInfomation" /> </xs:sequence> </xs:complexType> <xs:element name="ArrayOfGoodsInfomation" nillable="true" type="tns:ArrayOfGoodsInfomation" /> <xs:complexType name="GoodsInfomation"> <xs:sequence> <xs:element minOccurs="0" name="chargeType" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="excursionFreight" type="xs:float" /> <xs:element minOccurs="0" name="freight" type="xs:float" /> <xs:element minOccurs="0" name="goodsBar" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsBatchNumber" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsGuid" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsSpecification" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsType" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="goodsTypeCode" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="grossWeightUnitCode" type="xs:float" /> <xs:element minOccurs="0" name="grossWeightValue" type="xs:float" /> <xs:element minOccurs="0" name="insurancePrice" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="isInsurance" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="packageType" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="packageTypeCode" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="packagesNumber" type="xs:int" /> <xs:element minOccurs="0" name="remart" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="volumeUnitCode" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="volumeValue" type="xs:float" /> </xs:sequence> </xs:complexType> <xs:element name="GoodsInfomation" nillable="true" type="tns:GoodsInfomation" /> </xs:schema>
这个目标期望可以生成的类有:ShippingOder,GoodsInformation,ConsigneeInformation和ConsignorInformation
但测试生成的类有除了上面那四个外,还有三个:package-info,ObjectFactory,ArrayOfGoodsInfomation
如ShippingOrder这个类中部分代码如下:
public class ShippingOrder { @XmlSchemaType(name = "dateTime") protected XMLGregorianCalendar acceptTime; @XmlElementRef(name = "agencyPrice", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> agencyPrice; @XmlElementRef(name = "billId", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> billId; @XmlElementRef(name = "billingPersonName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> billingPersonName; @XmlElementRef(name = "branchName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> branchName; @XmlElementRef(name = "chargeType", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> chargeType; @XmlSchemaType(name = "dateTime") protected XMLGregorianCalendar checkTime; @XmlElementRef(name = "consigneeCardNO", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> consigneeCardNO; @XmlElementRef(name = "consigneeInfomation", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<ConsigneeInfomation> consigneeInfomation; @XmlElementRef(name = "consigneeName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> consigneeName; @XmlElementRef(name = "consigneeSignName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> consigneeSignName; @XmlElementRef(name = "consignorInfomation", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<ConsignorInfomation> consignorInfomation; @XmlElementRef(name = "consignorName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> consignorName; @XmlElementRef(name = "endStationName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> endStationName; @XmlElementRef(name = "goodsInfomations", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<ArrayOfGoodsInfomation> goodsInfomations; protected Boolean isInsurance; protected Boolean isRouteRecord; @XmlElementRef(name = "labelId", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> labelId; @XmlSchemaType(name = "dateTime") protected XMLGregorianCalendar limitTime; @XmlElementRef(name = "packageBillId", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> packageBillId; @XmlElementRef(name = "prepayPrice", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> prepayPrice; @XmlElementRef(name = "procedureCharge", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> procedureCharge; @XmlElementRef(name = "remark", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> remark; @XmlElementRef(name = "route", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> route; @XmlElementRef(name = "routePersonName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> routePersonName; @XmlElementRef(name = "sendStationName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> sendStationName; @XmlElementRef(name = "stationName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> stationName; protected Float totalCharge; protected Integer totalCount; protected Float totalWeight; @XmlElementRef(name = "transferName", namespace = "http://schemas.datacontract.org/2004/07/DataExchange.Utility.BussinessObject", type = JAXBElement.class, required = false) protected JAXBElement<String> transferName; @XmlSchemaType(name = "dateTime") protected XMLGregorianCalendar travelTime; //getter,setter
相关推荐
2. SAX解析:SAX(Simple API for XML)是一种事件驱动的解析方式,它不创建完整的文档对象模型,而是按顺序读取XML文件,遇到元素、属性等时触发相应的事件回调。SAX解析适用于处理大型XML文件,因为它占用的内存较...
- 在JAXB中,XSD文件是生成Java类的基础。XSD元素、属性和复杂类型将映射为Java类的字段和方法。 2. **JAXB绑定过程**: - **编译XSD到Java类**:使用JAXB的`xjc`工具,可以将XSD文件转换为Java源代码。`xjc`...
本教程将深入讲解如何使用Java动态生成XML文件,并涉及相关的类和方法。 首先,我们需要了解两个核心的Java API:`javax.xml.transform`和`javax.xml.parsers`。前者主要用于XML文档的转换,后者则用于处理XML的...
同样,Java也可以反向操作,从XML生成Java对象或XSD。使用Unmarshaller可以将XML数据解析为Java对象,而使用工具如JAXB或XML Schema Tools则可以生成XSD文件。 在提供的压缩包文件`xml_test`中,可能包含了用于演示...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
2. **生成Java类结构**:根据XSD中的元素和属性,工具自动生成对应的Java类,每个元素变成类的一个字段,属性则作为类的getter和setter方法。 3. **处理复杂类型**:如果XSD中定义了复杂类型,工具会创建相应的Java...
本篇将深入探讨如何使用Java来自动生成Java类和XML文件,以及它在实际开发中的应用。 首先,我们要理解Java类和XML文件在软件工程中的角色。Java类是面向对象编程的基础,用于封装数据和行为,构建程序的结构。而...
在Java编程中,生成XML文件并发送报文是一项常见的任务,尤其在系统间的数据交换、API调用或者网络通信中。XML(eXtensible Markup Language)是一种结构化数据表示语言,具有良好的可读性和可扩展性,是数据传输的...
如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.jdom <artifactId>jdom2 <version>2.0.6 ``` 然后,我们可以按照以下步骤创建一个简单的XML文档: 1. **创建元素**:使用...
- XMLStreamWriter提供一种流式写入方式,可以逐步构建XML文档,适合构建大型或者动态生成的XML文件。 4. **文件输出**:生成的XML文件会按照指定的路径和命名规则保存到本地文件系统。在此过程中,可能需要考虑...
在Java编程环境中,生成Word文档是一项常见的任务,尤其在企业级应用中,如报告生成、数据分析等场景。XML解析方式是一种高效且灵活的方法,能够帮助我们实现这一目标。本篇文章将详细探讨如何利用Java和XML解析来...
根据xml批量生成java类,可自定义模版 例子可读取单个xml文件,也可读取指定目录下的多个xml文件 默认输出目录:D:\test_file\genrate_java 可在工具类CommonUtil中修改 关于freemarker的更多介绍,可以查看相匹配...
Java语言在处理XML文件时,提供了丰富的API和库,使得我们可以轻松地读取、解析、修改和生成XML文档。在给定的场景中,我们主要关注如何使用Java来读取XML文件并根据需求生成新的文件。以下是关于这个主题的详细说明...
"xml自动生成java代码(改)"这个主题指的是通过解析XML文件来生成对应的Java类,以便于简化开发过程,提高效率。通常,这涉及到XML解析技术,如DOM解析,以及Java文件的读写操作。 DOM解析是处理XML文档的一种方法...
同样地,若`@XmlAccessorType`的访问权限设置为`XmlAccessType.NONE`,则可以在私有属性上使用`@XmlElement`或`@XmlAttribute`注解,这些属性依然会被映射到生成的XML文件中。 在实际应用中,开发者应当根据实际...
【JAVA对象序列化保存为XML文件的工具类】 在Java编程中,对象序列化是一种将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。而在反序列化时,这个字节流又可以恢复为原来的对象。Java提供了一个方便...
JAXBContext 生成 XML 文件或 Java 类对象转换注解 JAXB(Java API for XML Binding)是一种将 Java 对象与 XML 进行转换的技术。JAXB 提供了一个快速便捷的方式将 Java 对象与 XML 进行转换。在 JAX-WS(Java 的 ...
在已经有xml的情况下,快速生成javabean代码,不需要自己再手打大量无聊的代码。
使用java把数据库数据导出生成xml文件 使用java把数据库数据导出生成xml文件