`
donald3003a
  • 浏览: 65564 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
  • 淼淼E馒头: 这举列有点不恰当啊。。电影人和不同类型的电影。是两个不同概念 ...
    合成模式

使用JAXB相互转化bean对象与xml

阅读更多
java可以轻松的将xml文件转化为bean对象
这里介绍一个强大的工具jaxb,其实jdk就有这个功能,但是感觉不怎么强大,而且jaxb还可以根据xsd结构来生成对象。有空会介绍
1、javabean对象
@XmlRootElement(name = "beans")
@XmlAccessorType(XmlAccessType.NONE)
public class Beans {

	@XmlElement(name = "bean")
	private List<Bean> beanList;

	public List<Bean> getBeanList() {
		return beanList;
	}

	public void setBeanList(List<Bean> beanList) {
		this.beanList = beanList;
	}

}

这个是根对象,如果根对象只有1个元素完全可以用@XmlElementWrapper来代替,但是为了更好的扩展我这里使用一般的定义
这个特别注明的是
@XmlAccessorType的默认访问级别是XmlAccessType.PUBLIC_MEMBER,因此,如果java对象中的private成员变量设置了public权限的getter/setter方法,就不要在private变量上使用@XmlElement和@XmlAttribute注解,否则在由java对象生成xml时会报同一个属性在java类里存在两次的错误。同理,如果@XmlAccessorType的访问权限为XmlAccessType.NONE,如果在java的成员变量上使用了@XmlElement或@XmlAttribute注解,这些成员变量依然可以映射到xml文件。
我们这样可以自己控制要生成的对象

@XmlAccessorType(XmlAccessType.NONE)
public class Bean {

	@XmlAttribute(name = "id")
	private String id;

	@XmlAttribute(name = "class")
	private String className;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}

子节点 这里就没什么好说的。

2、具体实现
具体的实现很简单
先看marshaller
	public static void marshallerByJaxb(String path, Object object, Class clazz) throws JAXBException, IOException {
		JAXBContext jc = JAXBContext.newInstance(clazz);
		Marshaller marshaller = jc.createMarshaller();
		File file = new File(path);
		if (!file.exists()) {
			file.createNewFile();
		}
		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
		marshaller.marshal(object, file);
	}


调用
		Beans beans = new Beans();
		List<Bean> list = new ArrayList<Bean>();
		Bean beanOne = new Bean();
		beanOne.setClassName("testClassOne");
		beanOne.setId("testIdOne");
		Bean beanTwo = new Bean();
		beanTwo.setClassName("testClassTwo");
		beanTwo.setId("testIdTwo");
		list.add(beanOne);
		list.add(beanTwo);
		beans.setBeanList(list);
		XMLTransformed.marshallerByJaxb("test.xml", beans, Beans.class);


最后生成的xml

<beans>
    <bean id="testIdOne" class="testClassOne"/>
    <bean id="testIdTwo" class="testClassTwo"/>
</beans>


最后看unmarshaller
	public static Object unmarshallerByJaxb(String path, Class clazz) throws JAXBException, IOException {
		JAXBContext jc = JAXBContext.newInstance(clazz);
		Unmarshaller unmarshaller = jc.createUnmarshaller();
		File file = new File(path);
		if (!file.exists()) {
			throw new FileNotFoundException("Can not load xml file!");
		}
		return unmarshaller.unmarshal(file);
	}

分享到:
评论

相关推荐

    利用JAXB进行xml和javabean之间转换

    总之,JAXB是Java开发中处理XML的强大工具,通过它可以高效地进行XML与Java对象之间的转换,简化了数据交换过程。熟练掌握JAXB的使用,能大大提高开发效率,并让代码更加简洁、易于维护。在实际项目中,可以结合标签...

    jaxb XMl和BEAN互转实例(内含jar包)

    3. **转换BEAN到XML**:使用Marshaller的`marshal`方法将BEAN对象转换为XML文档。 ```java Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, ...

    利用jaxb实现xml和bean互转

    例如,一个Web服务可能接收XML请求,然后使用JAXB将其转换为Java对象进行处理,最后再将结果转换为XML响应。 **五、示例代码** ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; ...

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    总结来说,这个压缩包提供的内容涉及了Java中使用JAXB进行XML与Java对象之间转换的实际应用,以及辅助的DTO和文件读取工具。这些对于理解和实现XML数据处理的Java应用非常有帮助。开发者可以通过学习和使用这些示例...

    使用jaxb将XML转化为JAVA BEAN

    JAXB是Java标准API,它提供了将XML文档与Java对象之间进行自动转换的能力,极大地简化了XML的处理。 首先,我们需要理解JAXB的工作原理。JAXB基于Java反射机制,通过在Java类上使用特定的注解(如@XmlRootElement、...

    xml和bean 互相转换

    1. **解析XML**:Java中使用DOM(文档对象模型)、SAX(简单API for XML)或StAX(流式API for XML)等解析器读取XML文件并将其转化为内存中的对象结构。DOM一次性加载整个XML文档,适合小文件;SAX事件驱动,逐行...

    JAVA JAXB 解析XML嵌套子节点为字符串

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...

    JAXBUtil使用JAXB进行xml和bean互转

    总结起来,JAXBUtil通过JAXB API实现了XML与Java对象之间的无缝转换,极大地简化了开发过程。在实际项目中,我们可以根据XML文档结构设计相应的Java Bean类,然后利用`JaxbObjectAndXmlUtil`工具类方便地完成数据的...

    jaxb xml 转map

    在Java世界中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个过程被称为对象绑定。在处理XML数据时,JAXB提供了一种方便的方式,让我们可以将XML数据...

    java对象与xml的互相转换

    要使用JAXB,你需要定义一个Java类,该类的字段对应于XML元素,然后使用JAXB提供的API将该对象转换为XML。 以下是一个简单的例子: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller;...

    xml to bean or bean to xml

    使用JAXB,首先需要创建一个Java Bean类,该类的属性与XML元素相对应。例如,如果XML有如下结构: ```xml &lt;name&gt;John Doe &lt;age&gt;35 &lt;position&gt;Manager ``` 对应的Java Bean类`Employee.java`可能是这样的: ...

    JAXBContext测试Java对象与xml的相互转换Demo

    在这个"JAXBContext测试Java对象与xml的相互转换Demo"中,我们将深入探讨如何利用JAXBContext实现这一功能。 首先,我们需要定义一个Java类,这个类将被映射为XML文档的元素。例如,我们可以创建一个`Person`类,...

    xml和bean之间的相互转换源码

    在Java开发中,XML(可扩展标记语言)和Bean之间的相互转换是常见的操作,尤其是在处理配置文件、数据持久化或Web服务时。这里的"bean"通常指的是JavaBeans,即符合特定设计模式的Java对象,它们封装了数据并提供了...

    JavaXml及Bean互转

    在提供的`xml-demo`压缩包中,可能包含了使用这两种方法的示例代码,通过查看和运行这些示例,你可以更好地理解如何在实际项目中应用XStream和JAXB进行XML与Java Bean的互转。无论选择哪种方法,都需要注意处理Java...

    javabean和xml互相转换工具类以及jar包

    - **使用JAXB(Java Architecture for XML Binding)**:JAXB是Java标准API,可以自动将Java对象转换为XML和从XML反序列化为Java对象。只需为JavaBean添加适当的注解,然后使用JAXBContext和Marshaller进行转换。 ...

    Jaxb2 实现JavaBean与xml互转

    当需要在Java程序中处理XML数据时,JAXB(Java Architecture for XML Binding)提供了一种方便、高效的方法,将Java对象和XML文档之间进行映射,实现了JavaBean与XML之间的自动转换。本篇将深入探讨JAXB2在实现...

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    总结,XML与JavaBean之间的转换是Java开发中的常见操作,理解XML的大小写规则、特殊符号处理和CDATA的使用对于编写健壮的XML处理代码至关重要。掌握这些知识可以帮助开发者更有效地在XML和Java对象之间进行数据交换...

    Java XML绑定技术 (Castor JAXB XMLBeans)

    它是Java EE标准的一部分,提供了一种机制来将Java对象与XML文档相互转换。使用JAXB,可以通过简单的API调用来序列化和反序列化Java对象为XML文档,反之亦然。 **特点:** - **简单易用**:只需在Java类上添加一些...

    利用XMLBean轻轻松松读写XML

    XMLBean通过XSD(XML Schema Definition)文件将XML结构转换为Java类。这些Java类可以直接用来创建、访问和修改XML文档,就像操作普通Java对象一样。这样,开发者可以避免直接处理复杂的DOM或SAX解析,提高了代码的...

    castor样例xml to bean和bean to xml样例

    这个“castor-1.3.1-examples.zip”文件包含了一些示例,展示了如何使用Castor进行XML到Bean以及Bean到XML的转换。这个过程在处理XML数据时非常有用,尤其是在数据交换、序列化和持久化场景中。 1. XML到Bean转换:...

Global site tag (gtag.js) - Google Analytics