如何在 JAXB XML 解组期间为 children object 实现 parent object 属性(属性和值)
How to implement parent object attributes (props & values) for children objects during JAXB XML unmarshalling
我有 XML 配置,我必须用 JAXB 解组,然后在 java 代码中使用这个 objects。我有一个 parent object "tags" 和两个 child 标签 "innerTag"。所有标签都有属性。输入配置为:
...
<tags attribute1="value1" attribute2="value2">
<innerTag attribute3="value3"/>
<innerTag attribute4="value4"/>
</tags>
...
我的任务是在解组后为 innerTags 实现 attribute1 和 attribute2。它必须像这样解组 xml:
...
<tags>
<innerTag attribute1="value1" attribute2="value2" attribute3="value3"/>
<innerTag attribute1="value1" attribute2="value2" attribute4="value4"/>
</tags>
...
我在解析 XML 后创建 classes 代表 objects:
@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 class:
@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;
}
}
我不知道如何为 children 实现 parent 属性的属性和值...我还没有找到让我执行此类属性实现的 JAXB 指令。求助,解决这个问题!
试试这个,
首先解组 Tags
对象
File file = new File("XMLFile.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Tags.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Tags tags = (Tags) jaxbUnmarshaller.unmarshal(file);
然后,tags
的属性(attribute1 和 attribute2)值设置为 InnerTag
for (int i = 0; i < tags.getInnerTags().size(); i++) {
tags.getInnerTags().get(i).setAttribute1(tags.getAttribute1());
tags.getInnerTags().get(i).setAttribute2(tags.getAttribute2());
}
我有 XML 配置,我必须用 JAXB 解组,然后在 java 代码中使用这个 objects。我有一个 parent object "tags" 和两个 child 标签 "innerTag"。所有标签都有属性。输入配置为:
...
<tags attribute1="value1" attribute2="value2">
<innerTag attribute3="value3"/>
<innerTag attribute4="value4"/>
</tags>
...
我的任务是在解组后为 innerTags 实现 attribute1 和 attribute2。它必须像这样解组 xml:
...
<tags>
<innerTag attribute1="value1" attribute2="value2" attribute3="value3"/>
<innerTag attribute1="value1" attribute2="value2" attribute4="value4"/>
</tags>
...
我在解析 XML 后创建 classes 代表 objects:
@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 class:
@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;
}
}
我不知道如何为 children 实现 parent 属性的属性和值...我还没有找到让我执行此类属性实现的 JAXB 指令。求助,解决这个问题!
试试这个,
首先解组 Tags
对象
File file = new File("XMLFile.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Tags.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Tags tags = (Tags) jaxbUnmarshaller.unmarshal(file);
然后,tags
的属性(attribute1 和 attribute2)值设置为 InnerTag
for (int i = 0; i < tags.getInnerTags().size(); i++) {
tags.getInnerTags().get(i).setAttribute1(tags.getAttribute1());
tags.getInnerTags().get(i).setAttribute2(tags.getAttribute2());
}