java xml怎么作用的_如何使用JAXB解析Java中的XML?

本文介绍如何利用Java的JAXB库中的@XmlElementWrapper注解来减少XML绑定所需的类数量。通过示例展示了如何组织FosterHome、Family类以及它们之间的关系,并提供了代码示例进行XML的序列化和反序列化操作。此外,还提供了遍历并打印Family类中所有ChildID的方法。

小编典典

您可以执行以下操作。通过利用,@XmlElementWrapper您可以减少所需的类数量:

福斯特之家

package nov18;

import java.util.List;

import javax.xml.bind.annotation.*;

@XmlRootElement(name="FosterHome")

@XmlAccessorType(XmlAccessType.FIELD)

public class FosterHome {

@XmlElement(name="Orphanage")

private String orphanage;

@XmlElement(name="Location")

private String location;

@XmlElementWrapper(name="Families")

@XmlElement(name="Family")

private List families;

@XmlElementWrapper(name="RemainingChildList")

@XmlElement(name="ChildID")

private List remainingChildren;

}

家庭

package nov18;

import java.util.List;

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)

public class Family {

@XmlElement(name="ParentID")

private String parentID;

@XmlElementWrapper(name="ChildList")

@XmlElement(name="ChildID")

private List childList;

}

演示版

package nov18;

import java.io.File;

import javax.xml.bind.*;

public class Demo {

public static void main(String[] args) throws Exception {

JAXBContext jc = JAXBContext.newInstance(FosterHome.class);

Unmarshaller unmarshaller = jc.createUnmarshaller();

FosterHome fosterHome = (FosterHome) unmarshaller.unmarshal(new File("src/nov18/input.xml"));

Marshaller marshaller = jc.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

marshaller.marshal(fosterHome, System.out);

}

}

输入输出

Happy Days Daycare

Apple Street

Adams

Child1

Child2

Adams

Child3

Child4

Child5

Child6

想要查询更多的信息

更新

有没有简单的方法可以迭代/打印出Family类中的所有ChildID?

您可以执行以下操作:

for(Family family : fosterHome.getFamilies()) {

System.out.println(family.getParentID());

for(String childID : family.getChildList()) {

System.out.println(" " + childID);

}

}

2020-09-15

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值