如何在 JAXB XML 解组期间为子对象实现父对象属性(props 和值)



我有XML配置,我必须用JAXB取消编组,然后在java代码中使用此对象。我有一个父对象"标签"和两个子标签"innerTag"。所有标签都有属性。输入配置为:

...
<tags attribute1="value1" attribute2="value2">
<innerTag attribute3="value3"/> 
<innerTag attribute4="value4"/>
</tags>
...

我的任务是在解组后为 innerTags 实现属性 1 和属性 2。它必须是像这样的 xml 一样解封的:

...
<tags>
<innerTag attribute1="value1" attribute2="value2" attribute3="value3"/> 
<innerTag attribute1="value1" attribute2="value2" attribute4="value4"/>
</tags>
...

我创建了在解析 XML 后表示对象的类:

@XmlRootElement
class Tags {
private ArrayList<InnerTag> innerTags = new ArrayList<>();
private String attribute1;
private String attribute2;
...
@XmlElement(name = "innerTag")
@XmlElementWrapper(name="tags")
public ArrayList<InnerTag> getInnerTags(){
return innerTags;
}
...
@XmlAttribute
public String getAttribute1(){
return attribute1;
}
@XmlAttribute
public String getAttribute2(){
return attribute2;
}
...
}

和 InnerTag 类:

@XmlRootElement
class InnerTag {
private String attribute1;
private String attribute2;
private String attribute3;
private String attribute4;
...
@XmlAttribute
public String getAttribute1(){
return attribute1;
}
@XmlAttribute
public String getAttribute2(){
return attribute2;
}
...
@XmlAttribute
public String getAttribute3(){
return attribute3;
}
@XmlAttribute
public String getAttribute4(){
return attribute4;
}
}

我不知道如何为孩子实现父属性的属性和值......我还没有找到这样的 JAXB 解释让我做这样的属性实现。帮忙,请解决这个问题!

试试这个,

首先取消封送Tags对象

File file = new File("XMLFile.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Tags.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Tags tags = (Tags) jaxbUnmarshaller.unmarshal(file);

然后,属性的(属性 1 和属性 2)值tags设置为InnerTag

for (int i = 0; i < tags.getInnerTags().size(); i++) {
tags.getInnerTags().get(i).setAttribute1(tags.getAttribute1());
tags.getInnerTags().get(i).setAttribute2(tags.getAttribute2());
}

最新更新