转自:http://www.tuicool.com/articles/zEnQBn
先贴java
package a; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; @XmlType @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "Student") public class Student { /** * 做为node的属性 */ @XmlAttribute private String name; private String sex; /** * 自定义节点名称 */ @XmlElement(name = "theAge") private Integer age; /** * 不转化xml, 忽略掉 */ @XmlTransient private String remark = "remark..."; public Student() { super(); } public Student(String name, String sex, Integer age) { super(); this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } }
package a; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlType @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "Teacher") public class Teacher { private String name; private String sex; private Integer age; /** * 在Student数组外面加一个包含节点students */ @XmlElementWrapper(name = "students") @XmlElement(name="Student") private List<Student> students; public Teacher() { super(); } public Teacher(String name, String sex, Integer age) { super(); this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; } }
package a; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.StringReader; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; public class JaxbUtil { /** * java -> xml String * */ public static String java2xml(Object obj, Class beanClass) throws Exception { JAXBContext context = JAXBContext.newInstance(beanClass); // 根据上下文获取marshaller对象 Marshaller marshaller = context.createMarshaller(); // 设置编码字符集 marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); // 格式化XML输出,有分行和缩进 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 打印到控制台 //marshaller.marshal(obj, System.out); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshal(obj, baos); String xmlObj = new String(baos.toByteArray()); return xmlObj.replace(" standalone=\"yes\"", ""); } /** * java -> xml file * */ public static void java2xmlFile(Object obj, Class beanClass, File file) throws Exception { JAXBContext context = JAXBContext.newInstance(beanClass); // 根据上下文获取marshaller对象 Marshaller marshaller = context.createMarshaller(); // 设置编码字符集 marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); // 格式化XML输出,有分行和缩进 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 打印到控制台 //marshaller.marshal(obj, System.out); marshaller.marshal(obj, file); } /** * xml -> java * */ public static <T> T xml2java(String xml, Class<T> beanClass) throws Exception { T bean = beanClass.newInstance(); JAXBContext context = JAXBContext.newInstance(beanClass); Unmarshaller unmarshaller = context.createUnmarshaller(); bean = (T) unmarshaller.unmarshal(new StringReader(xml)); return bean; } /** * xml file -> java * */ public static <T> T xmlFile2java(File file, Class<T> beanClass) throws Exception { T bean = beanClass.newInstance(); JAXBContext context = JAXBContext.newInstance(beanClass); Unmarshaller unmarshaller = context.createUnmarshaller(); bean = (T) unmarshaller.unmarshal(file); return bean; } }
package a; import java.io.File; import java.util.ArrayList; import java.util.List; public class JaxbTest { public static void main(String[] args) { try { Teacher teacher = new Teacher("JuanJuan", "女", 22); Student student = new Student("Joyce.Luo", "男", 21); Student student2 = new Student("Phang.Law", "男", 18); List<Student> stuList = new ArrayList<Student>(); stuList.add(student); stuList.add(student2); teacher.setStudents(stuList); String xmlStr = JaxbUtil.java2xml(student, Student.class); System.out.println("\n对象转换为xml:\n" + xmlStr); String xmlTeaStr = JaxbUtil.java2xml(teacher, Teacher.class); System.out.println("\n包含集合的对象转换为xml:\n" + xmlTeaStr); String xmlStr3 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Student name=\"Joyce.Luo\"><sex>男</sex><theAge>21</theAge></Student>"; Student student3 = JaxbUtil.xml2java(xmlStr3, Student.class); System.out.println("xml字符串转化为对象:" + student3.getName()); File file = new File("file/str.xml"); if (file.exists()) { file.delete(); } JaxbUtil.java2xmlFile(teacher, Teacher.class, file); System.out.println("\n对象转换为xml file:" + file.length()); Teacher tea = JaxbUtil.xmlFile2java(file, Teacher.class); System.out.println("\nxml file转换为对象:\n" + tea.getName() + "\t" + tea.getSex() + "\t" + tea.getStudents().get(0).getName()); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...
jdk升级之后出现异常:java.lang.NoClassDefFoundError: javax/xml/ws/Service 1、解决方案jdk降级至1.8之前 2、由于JDK9以后,去除了javax.xml包需要引入对应的jar包 <groupId>javax.activation <artifactId>...
JAXB工具类 xml转为java对象 java对象转为xml ,本人亲测,可以使用!!!
标签:javax、xml、bind、jaxb、api、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
NULL 博文链接:https://luyuwww.iteye.com/blog/1988355
NULL 博文链接:https://xiongpan0807.iteye.com/blog/1832124
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例...
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。JAXB与xml相互转换实例。
jaxb将xml转换为对象或将对象转换为xml。测试通过。
Java 解析XML性能分析Demo。包含了DOM解析,SAX解析, JDOM解析,DOM4J解析,JAXB解析例子。
jaxb xml 转map
THE Java™Architecture for XML Binding (JAXB) provides a fast and convenient way to bind between XML schemas and Java representations, making it easy for Java developers to incorporate XML data and ...
JAXB XML TO JAVA,文件转化 生成java代码
Java XML绑定架构(JAXB)提供了一个绑定编译器,xjc,来从一个XML模式中生成Java类。用JAXB的xjc生成的Java类代表了在XML模式中不同的元素和复杂类型(complexType)。(一个复杂类型通过指定属性和元素内的元素来提供对...
《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定...
编写xsd文件,利用jaxb生成java类。
JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_...
使用jaxb生成XML例子,含有例子和注解解析
《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定...
标签:javax、xml、bind、jaxb、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...