当前位置: 首页 > 知识库问答 >
问题:

如何实现父对象属性(props

马权
2023-03-14

我必须用JAXB散集XML配置,然后在java代码中使用这些对象。我有一个父对象"标签"和两个子标签"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-derective,让我可以实现这样的属性。帮帮忙,请解决这个问题!

共有1个答案

韩英锐
2023-03-14

试试这个,

首先解组标记对象

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

然后,将标记的属性(attribute1和attribute2)值设置为内部标记

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

 类似资料:
  • 我有一些文档在嵌套对象中有嵌套对象: 在这里,主文档有几个嵌套的对象(标记),对于每个标记有几个嵌套的对象(事件)。 我希望获得transfer_processed类型的事件在transfer类型的标记之后60000毫秒内发生的所有文档。为此,我需要查询tags.at、tags.type、tags.events.at和tags.events.type。我不知道如何查询:我只查询tags.event

  • 问题内容: 我有一些文档在嵌套对象中具有嵌套对象: 在这里,主文档有几个嵌套对象(标签),每个标签有几个嵌套对象(事件)。 我想获得的所有地方类型的事件文件 transfer_processed 类型的标签后发生60000毫秒 转移 。为此,我需要同时查询 tag.at , tags.type , tags.events.at 和 tags.events.type 。而且我不知道怎么做:我只设法对

  • 问题内容: 我有一个用表声明的方式映射到表的类,并且我想从此类中“发现”表属性,列,名称,关系: 因此,现在我的目标是从“ Ship”类中从另一段代码中获取表列及其属性。我想我可以使用工具来处理它,但是SQLAlchemy API是否提供任何方法? 问题答案: 您可以从Table对象获取所需的信息: 将为您提供列信息 将列出外键 ,您可能会发现其他有用的属性

  • 问题内容: 说我这样创建一个对象: 检索属性名称列表的最佳方法是什么?即我想以一些变量“键”结束: 问题答案: 在现代浏览器(IE9 +,FF4 +,Chrome5 +,Opera12 +,Safari5+)中,您可以使用内置的Object.keys方法: 上面有完整的polyfill,但简化的版本是: 或者替换为,以允许您调用任何对象。扩展原型会产生一些副作用,我不建议您这样做。

  • 问题内容: 如何枚举JavaScript对象的属性? 我实际上想列出所有已定义的变量及其值,但是我了解到定义一个变量实际上会创建window对象的属性。 问题答案: 很简单: 现在,您将无法以这种方式获取私有变量,因为它们不可用。 编辑:是正确的,除非您使用该方法,否则您将获得继承的属性- 但是,我不知道为什么任何熟悉面向对象编程的人都期望得到更少的东西!通常,提起此问题的人会受到道格拉斯·克罗克

  • 在 PowerShell 中,如何通过指定对象的名称(字符串)来获取对象的属性值?我想要类似这样的东西: 是否有类似于“获取属性名称”的内容?