`
awdxzc
  • 浏览: 335634 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用jaxb将XML转化为JAVA BEAN

阅读更多
直接贴代码了,其中的参数的意思,自己查查就知道了,或者用一下就明白了。
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

@XmlRootElement(name="module")
public class Module extends Metadata{
	
	@XmlAttribute(name="name")
	public String name;
	
	@XmlAttribute(name="template")
	public String template;
	
	@XmlElement
	public Resources resources;
	
	@XmlElement
	public HeaderItems headerItems;
	
	@XmlElement
	public Properties properties;
	
	@XmlElement
	public BodyItems bodyItems;

	@XmlTransient
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@XmlTransient
	public String getTemplate() {
		return template;
	}

	public void setTemplate(String template) {
		this.template = template;
	}

	@XmlTransient
	public Resources getResources() {
		return resources;
	}

	public void setResources(Resources resources) {
		this.resources = resources;
	}

	@XmlTransient
	public HeaderItems getHeaderItems() {
		return headerItems;
	}

	public void setHeaderItems(HeaderItems headerItems) {
		this.headerItems = headerItems;
	}

	@XmlTransient
	public Properties getProperties() {
		return properties;
	}

	public void setProperties(Properties properties) {
		this.properties = properties;
	}

	@XmlTransient
	public BodyItems getBodyItems() {
		return bodyItems;
	}

	public void setBodyItems(BodyItems bodyItems) {
		this.bodyItems = bodyItems;
	}
}

Moduel对象其中一个对象属性:
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;

public class HeaderItems extends Metadata {
	
	@XmlElement(name="field")
	private List<Field> fields;

	@XmlTransient
	public List<Field> getFields() {
		return fields;
	}

	public void setFields(List<Field> fields) {
		this.fields = fields;
		for (int i=0; i<fields.size(); i++)
			fields.get(i).setHeaderItem(true);
	} 
	
	public void clear() {
		fields.clear();
	}
	
}

package com.morningstar.wfe.metadata.node;

import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;

public class Map extends Datasource {
	@XmlAttribute(name="name")
	public String name;
	
	@XmlAttribute(name="type")
	public String type;

	@XmlAttribute(name="url")
	public String url;
	
	@XmlElement
	public Entries entries;

	public void setName(String name) {
		this.name = name;
	}
	public void setType(String type) {
		this.type = type;
	}
	public void setEntries(Entries entries) {
		this.entries = entries;
	}
	
	@XmlTransient
	public String getName() {
		return name;
	}
	
	@XmlTransient
	public String getType() {
		return type;
	}
	
	@XmlTransient
	public Entries getEntries() {
		return this.entries;
	}
	
	@XmlTransient
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	
	public int size() {
		if (entries == null) return 0;
		
		return entries.size();
	}
		
	public Entry get(int index) {
		if (entries == null) return null;
		
		return entries.get(index);
	}
	
	
	public List<Entry> getEntriesList() {
		return entries.getEntryList();
	}
	
}

最后XML闪亮登场:
<?xml version="1.0" encoding="UTF-8"?>

<module name='showcase' template='showcase.ftl'>
	<resources>
		<map name='css' type='static'>
			<entries>
				<entry label="text_a1" value="text_a1"></entry>
				<entry label="text_a2" value="text_a2"></entry>
				<entry label="text_a3" value="text_a3"></entry>
				<entry label="text_c1" value="text_c1"></entry>
				<entry label="text_c2" value="text_c2"></entry>
			</entries>
		</map>
		<map name='status' type='ws' url="xxxx">
		</map>
		<map name='author' type='file' url="xxxx">
		</map>
	</resources>

	<headerItems>
		<field name='active1' type='checkbox' datasource='css'
			multiple='false' />
		<field name='title1' type='text' format="string" required="true"/>
		<field name='radio11' type='radio' datasource='css'/>
		<field name='url11' type='url' format="string"/>
		<field name='dropdownlist111' type='select' datasource='css' multiple="true" height="80" width="100"/>
		<field name='title22' type='textarea' width="200" height="100" spellCheck="true" format="string" required="true"/>
	</headerItems>

	
	<properties>
		<field name='active12' type='checkbox' datasource='status'
			multiple='false' />
		<field name='title12' type='date' format="int" />
		<field name='email11' type='email' visible="true" />
		
	</properties>

	<bodyItems>
		<field label="Name" name="name" type="text" visible="false"
			  editable="false"></field>
		
		<field name="readings_list" type="datatable" action="insert,remove">
			<columns>
				<field label="Title" name="rSource" type="text" visible="true" width="30"/>
				<field label="URL" name="rURL" type="text" visible="true" width="40"/>
				<field label="Date" name="rDate" type="text" visible="true" width="50"/>
				<field label="Source" name="rSource" type="text" visible="true" width="60"/>
			</columns>
		</field>
		
	</bodyItems>

</module>


Metadata是一个抽象类,描述了些 ID NAME VALUE基本属性 没什么特别的

关于XML转java对象的操作:
public static Module parse(String metadata) throws MetadataParserException {
		Module module = null;
		try {
			JAXBContext jaxbContext = JAXBContext.newInstance(Module.class);
			Unmarshaller um = jaxbContext.createUnmarshaller();
			module = (Module)um.unmarshal(new ByteArrayInputStream(metadata.getBytes()));
		} catch (JAXBException e) {
			log.warn("JAXB castor failed to convert the metadata to module instance by {}",e.getMessage());
			throw new MetadataParserException();
		}
		return module;
	}


这样的话传进XML的字符串,就可以解析出这个JAVA对象。完全不用写任何过多的代码。岂不爽哉?!!!!

附一个java bean <=> xml 的unmi同志原创文档,主要是比较Jaxb和castor。


提供一个JAXB学习的地址:http://jaxb.java.net/




分享到:
评论

相关推荐

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

    一旦建立了这种映射,我们就可以使用`Unmarshaller`来将XML文档解析为Java对象,或使用`Marshaller`将Java对象序列化为XML文档。 在XML到Bean的转换过程中,通常需要以下步骤: 1. **定义Java Bean类**:首先,...

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

    使用`JAXBContext`实例化一个marshaller对象,然后调用其`marshal()`方法将Java对象转换为XML字符串或文件。 (5) **XML反序列化** 同样,通过`JAXBContext`创建一个unmarshaller对象,调用其`unmarshal()`方法,...

    利用jaxb实现xml和bean互转

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

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

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

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

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

    xml和bean 互相转换

    2. **转换为XML**:使用JAXB的Marshaller将Bean转换为XML字符串或写入文件。 ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import java.io.File; public class WebController { ...

    JavaXml及Bean互转

    - 使用`toXML()`方法将Java Bean转换为XML字符串。 - 使用`fromXML()`方法将XML字符串转换为Java Bean。 3. **示例**: ```java import com.thoughtworks.xstream.XStream; public class XStreamDemo { ...

    JAXBUtil使用JAXB进行xml和bean互转

    JAXB提供了`Unmarshaller`和`Marshaller`接口,分别用于将Java对象转换为XML文档和将XML文档转换为Java对象。下面是一个简单的转换工具类的示例: ```java import javax.xml.bind.JAXBContext; import javax.xml....

    JAXB 利用xsd文件生成java类

    - **编译XSD到Java类**:使用JAXB的`xjc`工具,可以将XSD文件转换为Java源代码。`xjc`命令行工具通常包含在JDK中,也可以通过Maven或Gradle插件集成到构建流程中。 - **绑定配置**:通过在XSD文件中添加特殊的JAXB...

    jaxb xml 转map

    本话题我们将深入探讨如何使用JAXB将XML转换为Map。 XML是一种结构化数据表示方式,广泛用于数据交换和配置文件。而Map是Java中的一种数据结构,它将键(Key)与值(Value)关联起来,提供快速查找和存储。将XML...

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

    一旦定义好映射,Castor就能自动将XML数据转化为Java对象。 2. Bean到XML转换: 反之,如果你有一个Java对象并且希望将其转换为XML格式,Castor也能轻松实现。通过调用Castor提供的序列化方法,你可以将Java对象...

    xml to bean or bean to xml

    同样的,JAXB提供了一个简单的方法将Java对象转换为XML。假设我们已经有了一个`Employee`对象,我们可以使用Marshaller将其转换为XML: ```java Marshaller marshaller = jaxbContext.createMarshaller(); ...

    xml文件自动转成java对象工具

    XML文件自动转换为Java对象工具是一种实用的开发辅助软件,它可以帮助程序员快速地将XML数据映射到Java类,从而简化了数据处理的过程。在Java开发中,XML常被用作数据交换格式,但手动编写Java类来表示XML结构既耗时...

    JAVA XML转化BEEN

    总结来说,`JAVA XML转化BEEN`的核心是使用JAXB框架,通过注解或XSD生成Java Bean,并利用Unmarshaller和Marshaller进行XML与Java对象之间的转换。理解并熟练掌握这一技术,将有助于提高Java应用中处理XML数据的效率...

    jaxb功能用法

    JAXB允许我们通过简单的API来实现XML的序列化(将Java对象转换为XML)和反序列化(将XML转换回Java对象)。在这个"jaxb功能用法"的讨论中,我们将深入探讨如何利用JAXB进行XML与Java Bean之间的转换,并结合XSD(XML...

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

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

    Java XML绑定技术 (Castor JAXB XMLBeans)

    通过使用这些技术,开发人员可以将复杂的XML文档转换为易于理解和操作的Java对象,大大简化了XML的处理流程。 #### 三、JAXB JAXB(Java Architecture for XML Binding)是Sun Microsystems(现已被Oracle收购)...

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

    在Java编程中,XML数据经常需要转换为Java对象以便于操作。这一过程通常通过XML解析器来完成,如JAXB(Java Architecture for XML Binding)或DOM4J等。JAXB提供了一种自动将XML文档映射到Java对象的机制,反之亦然...

    java对象与xml的互相转换

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

Global site tag (gtag.js) - Google Analytics