- 浏览: 3513979 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:37478
-
Cordova 3.x入门...
浏览量:604304
-
常用Java开源Libra...
浏览量:678049
-
搭建 CentOS 6 服...
浏览量:87250
-
Spring Boot 入...
浏览量:399811
-
基于Spring Secu...
浏览量:69066
-
MQTT入门
浏览量:90468
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
JAXB(Java Architecture for XML Binding),JDK标准规范,Java对象和XML之间的转换,和SAX/DOM不同的是无需关注XML解析细节。
* JDK1.6开始提供JAXB 2.0(建议使用最新版JDK)
* 低于JDK1.6的版本需要下载jaxb-api.jar和jaxb-impl.jar
* JAXB还有JDK以外的很多第三方实现,比如:EclipseLink MOXy
以下代码都去掉了Bean的Setter/Getter,具体可执行的完整工程代码,可从附件下载。
(1) 基本
Java对象 -> XML
转换后的XML内容可以直接输出到其他流(比如:控制台、文件等)
XML -> Java对象
(2) 通过JAXBContext创建解析器
创建Marshaller
创建Unmarshaller
设置Marshaller属性
marshaller.setProperty();
(3) 采用EclipseLink MOXy作为JAXB provider
1)下载导入eclipselink.jar
2)在POJO的包下新建jaxb.properties
*** SUN的JAXB实现会在xml中添加属性standalone="yes",而EclipseLink MOXy就不会。
(4) 监听器
marshaller.setListener();
Marshaller监听器
Unmarshaller监听器
(5) 注解
设置内部标签顺序(默认是按标签字母排序)
@XmlType(propOrder={"id", "name", "flag"})
把字段值作为属性(默认都是标签)
@XmlAttribute
不输出某个字段值
@XmlTransient
空值处理
@XmlElement(nillable = true)
变更输出标签属性名称
@XmlRootElement(name="foobar-tag")
@XmlAttribute(name="foobar-id")
@XmlElement(name="foobar-value")
Bean类型
List类型
【字符串】默认
@XmlElementWrapper
@XmlList
【Bean】默认
@XmlElementWrapper
@XmlElements
枚举类型
@XmlEnum、@XmlEnumValue
(6) 适配器
@XmlJavaTypeAdapter
(7) Schema检验
SampleSchema.xsd
marshaller.setSchema();
validator.validate(source);
(8) 捕获事件
marshaller.setEventHandler();
- Marshalling – 把Java对象转换成XML
- Unmarshalling – 把XML转换成Java对象
* JDK1.6开始提供JAXB 2.0(建议使用最新版JDK)
* 低于JDK1.6的版本需要下载jaxb-api.jar和jaxb-impl.jar
* JAXB还有JDK以外的很多第三方实现,比如:EclipseLink MOXy
以下代码都去掉了Bean的Setter/Getter,具体可执行的完整工程代码,可从附件下载。
(1) 基本
Java对象 -> XML
@XmlRootElement public class Sample { private int id; private String name; private boolean flag; }
Sample s = new Sample(); s.setId(101); s.setName("basicObj2XML"); s.setFlag(false); StringWriter w = new StringWriter(); // JAXB是JDK封装好的解析器 JAXB.marshal(s, new StreamResult(w)); // 输出到字符串 System.out.println(w.toString());
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sample>
<flag>false</flag>
<id>101</id>
<name>basicObj2XML</name>
</sample>
<sample>
<flag>false</flag>
<id>101</id>
<name>basicObj2XML</name>
</sample>
转换后的XML内容可以直接输出到其他流(比如:控制台、文件等)
Sample s = new Sample(); s.setId(102); s.setName("basicObj2Output"); s.setFlag(false); JAXB.marshal(s, System.out); // 输出到控制台 JAXB.marshal(s, new File("d:\\jaxb_sample.xml")); // 输出到文件
XML -> Java对象
String xml = "<?xml version=\"1.0\"?>" + "<sample>" + " <id>103</id>" + " <name>basicXML2Obj</name>" + " <flag>false</flag>" + "</sample>"; StringReader r = new StringReader(xml); Sample ss = JAXB.unmarshal(r, Sample.class); System.out.println(ss.toString());
(2) 通过JAXBContext创建解析器
创建Marshaller
JAXBContext jaxbContext = JAXBContext.newInstance(Sample.class); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.marshal(s, System.out);
创建Unmarshaller
JAXBContext jaxbContext = JAXBContext.newInstance(Sample.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); StringReader r = new StringReader(xml); Sample sample = unmarshaller.unmarshal(new StreamSource(r), Sample.class).getValue(); System.out.println(sample.toString());
设置Marshaller属性
marshaller.setProperty();
JAXBContext jaxbContext = JAXBContext.newInstance(Sample.class); Marshaller marshaller = jaxbContext.createMarshaller(); // 设置格式化后输出 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 设置字符集 marshaller.setProperty(Marshaller.JAXB_ENCODING, Charset.defaultCharset().name()); marshaller.marshal(s, System.out);
(3) 采用EclipseLink MOXy作为JAXB provider
1)下载导入eclipselink.jar
2)在POJO的包下新建jaxb.properties
引用
#Sun JAXB
javax.xml.bind.context.factory=com.sun.xml.internal.bind.v2.ContextFactory
#Eclipse MOXy
#javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
javax.xml.bind.context.factory=com.sun.xml.internal.bind.v2.ContextFactory
#Eclipse MOXy
#javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
*** SUN的JAXB实现会在xml中添加属性standalone="yes",而EclipseLink MOXy就不会。
(4) 监听器
marshaller.setListener();
Marshaller监听器
public class MarshallListener extends Marshaller.Listener { public void beforeMarshal(Object source) { System.out.println("BEFORE_MARSHAL fired"); } public void afterMarshal(Object source) { System.out.println("AFTER_MARSHAL fired"); } }
JAXBContext jaxbContext = JAXBContext.newInstance(Sample.class); Marshaller marshaller = jaxbContext.createMarshaller(); // 设置监听器(!!!Sun JAXB实现有Bug会被执行两次,而Eclipse MOXy能正确执行一次!!!) marshaller.setListener(new MarshallListener()); marshaller.marshal(s, System.out);
Unmarshaller监听器
public class UnmarshallListener extends Unmarshaller.Listener { @Override public void beforeUnmarshal(Object target, Object parent) { System.out.println("BEFORE_UNMARSHAL fired"); } @Override public void afterUnmarshal(Object target, Object parent) { System.out.println("AFTER_UNMARSHAL fired"); } }
JAXBContext jaxbContext = JAXBContext.newInstance(Sample.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); // 设置监听器 unmarshaller.setListener(new UnmarshallListener()); StringReader r = new StringReader(xml); Sample sample = unmarshaller.unmarshal(new StreamSource(r), Sample.class).getValue(); System.out.println(sample.toString());
(5) 注解
设置内部标签顺序(默认是按标签字母排序)
@XmlType(propOrder={"id", "name", "flag"})
@XmlRootElement @XmlType(propOrder={"id", "name", "flag"}) public class SampleOrder { private int id; private String name; private boolean flag; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleOrder>
<id>501</id>
<name>marshallerTagOrder</name>
<flag>false</flag>
</sampleOrder>
<sampleOrder>
<id>501</id>
<name>marshallerTagOrder</name>
<flag>false</flag>
</sampleOrder>
把字段值作为属性(默认都是标签)
@XmlAttribute
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleAttribute { @XmlAttribute private int id; private String name; private boolean flag; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleAttribute id="502">
<name>SampleAttribute</name>
<flag>false</flag>
</sampleAttribute>
<sampleAttribute id="502">
<name>SampleAttribute</name>
<flag>false</flag>
</sampleAttribute>
不输出某个字段值
@XmlTransient
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleTransient { private int id; private String name; @XmlTransient private boolean flag; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleTransient>
<id>503</id>
<name>SampleTransient</name>
</sampleTransient>
<sampleTransient>
<id>503</id>
<name>SampleTransient</name>
</sampleTransient>
空值处理
@XmlElement(nillable = true)
SampleEmpty s = new SampleEmpty(); s.setId(504); s.setName("SampleEmpty"); s.setFlag(false); s.setName1(null); s.setName2(""); s.setName3(null);
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleEmpty { private int id; private String name; private boolean flag; private String name1; private String name2; @XmlElement(nillable = true) private String name3; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleEmpty>
<id>504</id>
<name>SampleEmpty</name>
<flag>false</flag>
<name2></name2>
<name3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</sampleEmpty>
<sampleEmpty>
<id>504</id>
<name>SampleEmpty</name>
<flag>false</flag>
<name2></name2>
<name3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</sampleEmpty>
变更输出标签属性名称
@XmlRootElement(name="foobar-tag")
@XmlAttribute(name="foobar-id")
@XmlElement(name="foobar-value")
@XmlRootElement(name="foobar-tag") @XmlAccessorType(XmlAccessType.FIELD) public class SampleName { @XmlAttribute(name="foobar-id") private int id; @XmlElement(name="foobar-value") private String name; private boolean flag; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<foobar-tag foobar-id="505">
<foobar-value>SampleName</foobar-value>
<flag>false</flag>
</foobar-tag>
<foobar-tag foobar-id="505">
<foobar-value>SampleName</foobar-value>
<flag>false</flag>
</foobar-tag>
Bean类型
@XmlRootElement public class SampleBeanNested { private int id; private String name; private boolean flag; private People people; } public class People { private int id; private String name; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleBeanNested>
<flag>false</flag>
<id>506</id>
<name>SampleBeanNested</name>
<people>
<id>100</id>
<name>People</name>
</people>
</sampleBeanNested>
<sampleBeanNested>
<flag>false</flag>
<id>506</id>
<name>SampleBeanNested</name>
<people>
<id>100</id>
<name>People</name>
</people>
</sampleBeanNested>
List类型
【字符串】默认
@XmlRootElement public class SampleStringList1 { private int id; private String name; private boolean flag; private List<String> emailAddresses; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleStringList1>
<emailAddresses>a1.rensanning@gmail.com</emailAddresses>
<emailAddresses>a2.rensanning@gmail.com</emailAddresses>
<emailAddresses>a3.rensanning@gmail.com</emailAddresses>
<flag>false</flag>
<id>507</id>
<name>SampleStringList1</name>
</sampleStringList1>
<sampleStringList1>
<emailAddresses>a1.rensanning@gmail.com</emailAddresses>
<emailAddresses>a2.rensanning@gmail.com</emailAddresses>
<emailAddresses>a3.rensanning@gmail.com</emailAddresses>
<flag>false</flag>
<id>507</id>
<name>SampleStringList1</name>
</sampleStringList1>
@XmlElementWrapper
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleStringList2 { private int id; private String name; private boolean flag; @XmlElementWrapper(name="email-addresses") @XmlElement(name="email-address") private List<String> emailAddresses; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleStringList2>
<id>508</id>
<name>SampleStringList2</name>
<flag>false</flag>
<email-addresses>
<email-address>b1.rensanning@gmail.com</email-address>
<email-address>b2.rensanning@gmail.com</email-address>
<email-address>b3.rensanning@gmail.com</email-address>
</email-addresses>
</sampleStringList2>
<sampleStringList2>
<id>508</id>
<name>SampleStringList2</name>
<flag>false</flag>
<email-addresses>
<email-address>b1.rensanning@gmail.com</email-address>
<email-address>b2.rensanning@gmail.com</email-address>
<email-address>b3.rensanning@gmail.com</email-address>
</email-addresses>
</sampleStringList2>
@XmlList
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleStringList3 { private int id; private String name; private boolean flag; @XmlList private List<String> emailAddresses; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleStringList3>
<id>509</id>
<name>SampleStringList3</name>
<flag>false</flag>
<emailAddresses>c1.rensanning@gmail.com c2.rensanning@gmail.com c3.rensanning@gmail.com</emailAddresses>
</sampleStringList3>
<sampleStringList3>
<id>509</id>
<name>SampleStringList3</name>
<flag>false</flag>
<emailAddresses>c1.rensanning@gmail.com c2.rensanning@gmail.com c3.rensanning@gmail.com</emailAddresses>
</sampleStringList3>
【Bean】默认
@XmlRootElement public class SampleBeanList1 { private int id; private String name; private boolean flag; private List<People> peoples; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleBeanList1>
<flag>false</flag>
<id>510</id>
<name>SampleBeanList1</name>
<peoples>
<id>100</id>
<name>People1</name>
</peoples>
<peoples>
<id>200</id>
<name>People2</name>
</peoples>
<peoples>
<id>300</id>
<name>People3</name>
</peoples>
</sampleBeanList1>
<sampleBeanList1>
<flag>false</flag>
<id>510</id>
<name>SampleBeanList1</name>
<peoples>
<id>100</id>
<name>People1</name>
</peoples>
<peoples>
<id>200</id>
<name>People2</name>
</peoples>
<peoples>
<id>300</id>
<name>People3</name>
</peoples>
</sampleBeanList1>
@XmlElementWrapper
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleBeanList2 { private int id; private String name; private boolean flag; @XmlElementWrapper(name="list") @XmlElement(name="people") private List<People> peoples; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleBeanList2>
<id>511</id>
<name>SampleBeanList2</name>
<flag>false</flag>
<list>
<people>
<id>100</id>
<name>People1</name>
</people>
<people>
<id>200</id>
<name>People2</name>
</people>
<people>
<id>300</id>
<name>People3</name>
</people>
</list>
</sampleBeanList2>
<sampleBeanList2>
<id>511</id>
<name>SampleBeanList2</name>
<flag>false</flag>
<list>
<people>
<id>100</id>
<name>People1</name>
</people>
<people>
<id>200</id>
<name>People2</name>
</people>
<people>
<id>300</id>
<name>People3</name>
</people>
</list>
</sampleBeanList2>
@XmlElements
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleBeanList3 { private int id; private String name; private boolean flag; @XmlElementWrapper(name="list") @XmlElements( { @XmlElement(name = "man", type = Man.class), @XmlElement(name = "woman", type = Woman.class) }) private List<People> peoples; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleBeanList3>
<id>512</id>
<name>SampleBeanLis3</name>
<flag>false</flag>
<list>
<man>
<id>100</id>
<name>Man</name>
<attr1>Attr1</attr1>
</man>
<woman>
<id>200</id>
<name>Woman</name>
<attr2>Attr2</attr2>
</woman>
</list>
</sampleBeanList3>
<sampleBeanList3>
<id>512</id>
<name>SampleBeanLis3</name>
<flag>false</flag>
<list>
<man>
<id>100</id>
<name>Man</name>
<attr1>Attr1</attr1>
</man>
<woman>
<id>200</id>
<name>Woman</name>
<attr2>Attr2</attr2>
</woman>
</list>
</sampleBeanList3>
枚举类型
@XmlEnum、@XmlEnumValue
@XmlEnum(Integer.class) @XmlType public enum BloodType { @XmlEnumValue("1") A, @XmlEnumValue("2") B, @XmlEnumValue("3") O, @XmlEnumValue("4") AB } @XmlRootElement public class SampleEnum { private int id; private String name; private boolean flag; private BloodType bloodType; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleEnum>
<bloodType>2</bloodType>
<flag>false</flag>
<id>513</id>
<name>SampleEnum</name>
</sampleEnum>
<sampleEnum>
<bloodType>2</bloodType>
<flag>false</flag>
<id>513</id>
<name>SampleEnum</name>
</sampleEnum>
(6) 适配器
@XmlJavaTypeAdapter
public class DateAdapter extends XmlAdapter<String, Date> { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); public Date unmarshal(String v) throws Exception { return dateFormat.parse(v); } public String marshal(Date v) throws Exception { return dateFormat.format(v); } } @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SampleDateAdapter { private int id; private String name; private boolean flag; @XmlJavaTypeAdapter(DateAdapter.class) private Date date; }
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sampleDateAdapter>
<id>601</id>
<name>SampleDateAdapter</name>
<flag>false</flag>
<date>2017/06/09 09:52:26</date>
</sampleDateAdapter>
<sampleDateAdapter>
<id>601</id>
<name>SampleDateAdapter</name>
<flag>false</flag>
<date>2017/06/09 09:52:26</date>
</sampleDateAdapter>
(7) Schema检验
SampleSchema.xsd
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="SampleSchema"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="flag" type="xs:boolean" /> </xs:sequence> <xs:attribute name="id" type="xs:int" /> </xs:complexType> </xs:element> </xs:schema>
marshaller.setSchema();
@XmlRootElement(name="SampleSchema") @XmlAccessorType(XmlAccessType.FIELD) public class SampleSchema { @XmlAttribute private int id; private String name; private boolean flag; }
SampleSchema s = new SampleSchema(); s.setId(701); s.setName("SampleSchema"); s.setFlag(false); ClassLoader classLoader = new Main().getClass().getClassLoader(); File schemaFile = new File(classLoader.getResource("SampleSchema.xsd").getFile()); SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = sf.newSchema(schemaFile); JAXBContext jaxbContext = JAXBContext.newInstance(SampleSchema.class); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 设置Schema marshaller.setSchema(schema); marshaller.marshal(s, System.out);
引用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SampleSchema id="701">
<name>SampleSchema</name>
<flag>false</flag>
</SampleSchema>
<SampleSchema id="701">
<name>SampleSchema</name>
<flag>false</flag>
</SampleSchema>
validator.validate(source);
SampleSchema s = new SampleSchema(); s.setId(702); s.setName("marshallerValidator"); s.setFlag(false); ClassLoader classLoader = new Main().getClass().getClassLoader(); File schemaFile = new File(classLoader.getResource("SampleSchema.xsd").getFile()); SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = sf.newSchema(schemaFile); JAXBContext jaxbContext = JAXBContext.newInstance(SampleSchema.class); // 校验XML JAXBSource source = new JAXBSource(jaxbContext, s); Validator validator = schema.newValidator(); validator.setErrorHandler(new CustomValidationErrorHandler()); validator.validate(source); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(s, System.out);
(8) 捕获事件
marshaller.setEventHandler();
public class CustomEventHandler implements ValidationEventHandler { @Override public boolean handleEvent(ValidationEvent event) { System.out.println(event.getSeverity()); if (event.getSeverity() == ValidationEvent.ERROR || event.getSeverity() == ValidationEvent.FATAL_ERROR) { ValidationEventLocator locator = event.getLocator(); System.out.println("Line:Col[" + locator.getLineNumber() + ":" + locator.getColumnNumber() + "]"); throw new RuntimeException(event.getMessage(), event.getLinkedException()); } return true; } }
JAXBContext jaxbContext = JAXBContext.newInstance(Sample.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); // 设置事件处理器 unmarshaller.setEventHandler(new CustomEventHandler()); StringReader r = new StringReader(xml); Sample sample = unmarshaller.unmarshal(new StreamSource(r), Sample.class).getValue(); System.out.println(sample.toString());
- JAXBSample.zip (8 MB)
- 下载次数: 1
发表评论
-
Web API分页
2018-11-13 13:38 1504(一)分页类型 逻辑分页(客户端分页):从数据库将所有记录查询 ... -
Java Web项目中的Event
2017-06-05 09:42 1612(1)Servlet的事件和监听器 *** Servle ... -
关于Java SPI
2017-05-04 12:07 1986SPI:Service Provider Interface ... -
Jackson实例入门
2017-05-03 12:55 1636Jackson:Java平台的JSON解析器。 版本: ja ... -
为什么https被redirect成了http?
2016-11-14 09:35 7639全站HTTPS并不是配置证书CA,改改路径URL那么简单! ... -
简化Java代码
2016-10-09 11:25 1247样板代码Boilerplate Code的 ... -
Java Web Project based on Spring
2016-09-28 11:21 985基于Spring开发Web项目的标配Library。 工具 ... -
Eclipse Scrapbook快速测试Java代码
2016-09-09 15:12 1276Scrapbook是Eclipse提供的特 ... -
Java爬取 百度图片&Google图片&Bing图片
2016-08-04 09:54 7455先看看抓取的结果。 抓关键字“美女”的百度图片: 抓关键字 ... -
学习Java容易混淆的一概念
2016-05-13 11:01 1607基础篇 (1)== vs equals() ... -
20年Java发展历程(1995-2015)
2015-03-25 21:58 2275Java语言作为现在最流行的编程语言之一,它已经经历了整整20 ... -
Java命令行选项解析之Commons-CLI & Args4J & JCommander
2014-11-27 12:09 22382熟悉Linux命令的都知道几乎所有程序都会提供一些命令行选项。 ... -
Java调用Native API之JNA
2014-11-10 12:09 7712Java调用C/C++的Native API一般采用JNI(J ... -
Java执行SSH/SCP之JSch
2014-08-27 17:17 11422JSch (Java Secure Channel)是纯Jav ... -
GC日志分析
2014-07-18 08:54 2821GC:Garbage Collection 垃圾回收 (1) ... -
Java元组类型之javatuples
2014-05-20 10:58 26915关于方法的返回值,经常需要返回2个值或多个值的一个序列,比如数 ... -
AngularJS实例入门
2014-05-16 14:35 2590AngularJS :Google的前端JS框架。 版本:v ... -
Java 8 之 反编译Lambda表达式(CFR)
2014-04-14 09:34 6471CFR(Class File Reader) - anoth ... -
Java 8 之 Optional类
2014-04-08 14:38 2931在Java中,null代表一个不存在的对象,如果对它进行操作就 ... -
Java 8 之 Lambda表达式
2014-04-01 09:14 16124Java 8历时2年8个月,这次升级是继Java 5之后对Ja ...
相关推荐
很好的jaxb入门示例 把所有注解标签都试一遍基本就OK了
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。JAXB与xml相互转换实例。
JAXB的使用JAXB的使用JAXB的使用JAXB的使用
NULL 博文链接:https://dannyhz.iteye.com/blog/2316638
无需安装,解压后即可。jaxb-api.jar,jaxb-xjc.jar,jaxb-impl.jar,activation.jar等相关jar包在lib文件夹下。
jaxb资料及实例,里面还包含了其他资料地址2
jaxb-api jaxb-impl jar
JAXB的安装包及插件
JAXB的 eclipse插件 JAXB的 eclipse插件 JAXB的 eclipse插件 JAXB的 eclipse插件 JAXB的 eclipse插件
webservice实例 CXF的JAXWS和JAXRS实现 及JAXB标准接口实现带jar包 全部手写,保证质量,导入就可以用
在使用webservice,mule esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader这个错误,按照打出的信息Use the endorsed directory mechanism to place jaxb-api.jar in ...
jaxb XMl和BEAN互转实例(内含jar包),将jaxb封装成一个Util工具类,只需要通过对BEAN进行简单的注解就可以直接实现xml和bean之间的互转
java -jar JAXB2_20060607.jar On Windows, you can just double-click the jar file to execute. Release Notes Browse the release notes online, including what's new. Technical Support Please subscribe to...
JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术
使用jaxb生成XML例子,含有例子和注解解析
NULL 博文链接:https://popomonkey.iteye.com/blog/688580
jaxb基础知识学习,初级的java学习者,可以参考这个文档学习
有关Maven项目中缺少jaxb-api的异常报错解决,jaxb-api-2.3.0.jar
一个JAXB2的基础教程,教你快速运用JAXB通过XSD绑定XML和读写XML