转自: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...
本主题聚焦于Java与XML之间的相互转化,特别是如何利用XML文件自动生成JavaBean对象,以及Java对象到XML的序列化和反序列化过程。 首先,Java与XML的转化通常涉及两个主要步骤:解析XML文件生成Java对象和将Java...
标题中的“java-xml自动生成对象实体以及与xml相互转化”指的是使用Java技术将XML文件转换为Java对象(即Java Bean),反之亦然。这一过程通常涉及到以下几个关键知识点: 1. **Java DOM解析器**:DOM(Document ...
本示例"JAVA对象与XML相互转化DEMO"聚焦于如何在Java中实现对象与XML之间的互转,这对于理解和处理数据交换至关重要。 首先,Java中实现XML到对象的转换主要依赖于JAXB(Java Architecture for XML Binding)。JAXB...
标题提到的"xml转对象封装的简单与复杂xml的转化写法"主要涉及以下知识点: 1. **JDOM库**:JDOM是Java Document Object Model的缩写,它提供了一种在内存中表示XML文档的方式,通过创建SAXBuilder或DOMBuilder实例...
JAXB是Java标准API,它提供了将XML文档与Java对象之间进行自动转换的能力,极大地简化了XML的处理。 首先,我们需要理解JAXB的工作原理。JAXB基于Java反射机制,通过在Java类上使用特定的注解(如@XmlRootElement、...
在Java开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,特别是在与Web服务交互时。当从Web服务接收到XML响应时,通常需要将其解析为更便于操作的数据结构,如Map。Map是一种键值对集合,能够...
Java与XML数据绑定是将Java对象与XML文档之间的映射关系进行自动化处理的一种技术,它极大地简化了在Java应用中处理XML数据的工作流程。在Java世界中,JAXB(Java Architecture for XML Binding)是Java EE平台的一...
JAXB (Java Architecture for XML Binding) 是一种基于 Java 的 XML 绑定技术,主要功能是根据 DTD 或者 XML Schema 将 XML Element 转化为 Java 类。JAXB 将 XML 文本流转化为 Java Object,把 XML Processing 转化...
本示例涉及的核心知识点是将Java中的List对象与XML文档进行相互转换。这里,我们使用的库是dom4j-1.6.1.jar,这是一个强大的Java XML处理库。 首先,让我们详细了解一下List和XML。List是Java集合框架的一部分,它...
2. **JAXB(Java Architecture for XML Binding)**:在Java中,JAXB是一个标准API,它提供了将XML文档与Java对象之间自动转换的能力。JAXB允许开发者定义Java类并生成对应的XML Schema,或者反过来,从XML Schema...
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例...
总结来说,`JAVA XML转化BEEN`的核心是使用JAXB框架,通过注解或XSD生成Java Bean,并利用Unmarshaller和Marshaller进行XML与Java对象之间的转换。理解并熟练掌握这一技术,将有助于提高Java应用中处理XML数据的效率...
总结来说,`EasyXmlUtil`是一个实用的Java工具类,它封装了XML与Map之间的相互转换功能,使得开发者能方便快捷地处理这两种数据格式。通过理解和使用此类,可以提高开发效率,简化数据处理的复杂性。在项目中,只需...
首先,我们来看“JAXB XML转化为对象”。当接收到一个XML文档时,JAXB使用`Unmarshaller`接口将XML数据解析成Java对象。这个过程叫做反序列化。例如,我们有一个XML文件,通过定义一个Java类与XML元素对应,然后使用...
在Java编程中,XML与Java对象的相互转化是常见的需求,特别是在持久化、配置文件处理或网络通信中。本教程通过一个Eclipse项目演示了如何实现这一转化。 首先,我们需要理解XML文档的基本结构。XML文档由元素...
JAXB允许我们根据XSD文件自动生成Java类,这样在解析XML时,可以直接将XML元素转化为Java对象,提高了开发效率。 转换过程通常包括以下步骤: 1. **理解XML文件结构**:首先,需要理解XML文件中的元素、属性及其...
JAXB 提供了许多有用的功能,例如可以将 Java 对象与 XML 进行绑定,可以实现 Java 对象与 XML 的相互转换,等等。 此外,JAXB 也提供了一些有用的工具,例如 XJC 工具,通过定义 schema 的方式可以实现 Java 对象...
- **使用Apache Commons Betwixt**:与转换过程类似,Betwixt提供了从XML到JavaBean的反向映射功能。 在实际应用中,`Bean2xml.java`可能是一个工具类,它封装了上述转换逻辑。这个类可能包含静态方法,如`...
在Java开发中,将XML数据与Java实体类进行相互转换是非常常见的需求,这有助于简化数据处理和存储。本文将详细介绍如何使用工具类进行XML与实体类的转换,并探讨相关依赖和实现方法。 首先,XML转换为Java实体类的...