jaxb解析xml关于处理list的注解
来源:互联网 发布:东方证券炒股软件 编辑:程序博客网 时间:2024/06/07 14:29
在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记,
这个是一个典型的POJO了,其中引用了对象emailAddress,是一个List,那么下面演示各类用法:
先看默认的调用代码如下:
默认的把这个对象输出为一般的XML:
<customer>
<emailAddresses>janed@example.com</emailAddresses>
<emailAddresses>jdoe@example.org</emailAddresses>
</customer>
下面逐一看每个注解的用法
1) @XmlElement
@XmlElement(name="email-address")
private List<String> emailAddresses;
加上这个注解的话,则按自定义的xml标签名去输出某个属性,如下:
<customer>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</customer>
2) @XmlElementWrapper
这个注解等于在最外面再包一层了,
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElementWrapper(name="email-addresses")
@XmlElement(name="email-address")
private List<String> emailAddresses;
}
输出:
<customer>
<email-addresses>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</email-addresses>
</customer>
3) @XmlList
这个等于是在同一行中,把list中的输出,以空格形式分隔开来,
输出:
<customer>
<emailAddresses>janed@example.com jdoe@example.org</emailAddresses>
</customer>
4)
@XmlList和 @XmlAttribute混合使用
@XmlList
@XmlAttribute
private List<String> emailAddresses;
输出:
<customer
emailAddresses="janed@example.com jdoe@example.org"/>
看到没?就是同一行中逗号输出,并作为customer的一个属性
5)
@XmlList 和 @XmlValue混用
@XmlList
@XmlValue
private List<String> emailAddresses;
就是把emailAddress的list的值,作为<customer>的value 输出,结果如下:
<customer>janed@example.com jdoe@example.org</customer>
下面就来以一个例子小结下,加深学习:
import java.util.*; import javax.xml.bind.annotation.*; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Customer { private List<String> emailAddresses; public Customer() { emailAddresses = new ArrayList<String>(); } public List<String> getEmailAddresses() { return emailAddresses; } public void setEmailAddresses(List<String> emailAddresses) { this.emailAddresses = emailAddresses; } }
这个是一个典型的POJO了,其中引用了对象emailAddress,是一个List,那么下面演示各类用法:
先看默认的调用代码如下:
import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Customer.class); Customer customer = new Customer(); customer.getEmailAddresses().add("janed@example.com"); customer.getEmailAddresses().add("jdoe@example.org"); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(customer, System.out); } }
默认的把这个对象输出为一般的XML:
<customer>
<emailAddresses>janed@example.com</emailAddresses>
<emailAddresses>jdoe@example.org</emailAddresses>
</customer>
下面逐一看每个注解的用法
1) @XmlElement
@XmlElement(name="email-address")
private List<String> emailAddresses;
加上这个注解的话,则按自定义的xml标签名去输出某个属性,如下:
<customer>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</customer>
2) @XmlElementWrapper
这个注解等于在最外面再包一层了,
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElementWrapper(name="email-addresses")
@XmlElement(name="email-address")
private List<String> emailAddresses;
}
输出:
<customer>
<email-addresses>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</email-addresses>
</customer>
3) @XmlList
这个等于是在同一行中,把list中的输出,以空格形式分隔开来,
@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Customer { @XmlList private List<String> emailAddresses; }
输出:
<customer>
<emailAddresses>janed@example.com jdoe@example.org</emailAddresses>
</customer>
4)
@XmlList和 @XmlAttribute混合使用
@XmlList
@XmlAttribute
private List<String> emailAddresses;
输出:
<customer
emailAddresses="janed@example.com jdoe@example.org"/>
看到没?就是同一行中逗号输出,并作为customer的一个属性
5)
@XmlList 和 @XmlValue混用
@XmlList
@XmlValue
private List<String> emailAddresses;
就是把emailAddress的list的值,作为<customer>的value 输出,结果如下:
<customer>janed@example.com jdoe@example.org</customer>
本文来至:http://jackyrong.iteye.com/blog/1890669
0 0
- jaxb解析xml关于处理list的注解
- jaxb 解析多列数据的xml 映射成list
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- JAXB注解 java 关于xml的注解,自动生成xml文件
- JAXB注解 java 关于xml的注解,自动生成xml文件
- JAXB注解 java 关于xml的注解,自动生成xml文件
- JAXB注解 java 关于xml的注解,自动生成xml文件
- Jaxb对XML的解析
- [java]JAXB解析XML时默认值处理
- java关于xml的注解: JAXB(自动生成xml文件)
- JAXB解析xml 的XML声明
- JAXB解析xml 的XML声明
- 用Jaxb解析XML的应用
- 视频播放器的开源项目
- 联网加载图片,一个很原始,很古老的办法
- shark 原理和架构《一》
- Python 基础1
- Flume NG:Flume OG 区别对比
- jaxb解析xml关于处理list的注解
- Android 内存溢出解决方案(OOM) 整理总结
- UIView (GFExtension)扩展
- linux下scsi共享磁盘的简单搭建
- SAP 系统的消息类型分析 MESSAGE TYPE
- android 添加随意拖动的桌面悬浮窗口(续)
- C# WPF 毫秒和时间转换类 源代码
- C#获取openfire的用户,包括增、删、改等
- Android Application解读