java - 如何在 JAXB XML 解码期间实现子对象的父对象属性(属性和值)

标签 java xml jaxb

我有 XML 配置,必须使用 JAXB 对其进行解码,然后在 java 代码中使用此对象。我有一个父对象“tags”和两个子标签“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 后表示对象的类:

@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);

然后,将 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());
}

关于java - 如何在 JAXB XML 解码期间实现子对象的父对象属性(属性和值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56635324/

相关文章:

Java,查找数组中的最小数字

java - 是否可以在带有进度监视器的 JFace 向导中运行批处理文件?

xml - 隔离大型 xml 文件中的文本

java - 需要帮助查找异常 "javax.xml.bind.UnmarshalException - with linked exception:"

java - 导入 com.sun.xml.internal.ws.client.ClientTransportException,无法读取此导入

java - 从 JAXB 迁移到 Castor 的简单方法?

java - 如何处理 org.hibernate.exception.ConstraintViolationException,我使用 try catch 不起作用

java - android.database.sqlite.SQLiteCantOpenDatabaseException 仅适用于 MD_LIFETAB_P9516

javascript - 在 IE/FF 中使用 getElementsByTagName 时自定义标签的处理方式不同

javascript - 如何使用 JQuery 根据 HTML 多选下拉列表定义的多个搜索条件搜索 XML 中的数据