在jaxb类

时间:2018-03-24 15:40:02

标签: java xml jaxb

首先,我对java(以及一般代码......)和非常 jaxb和xml解析的新手仍然很新,所以对于任何可能的词汇错误都很抱歉。

我有一个名为PropertyType的jaxb生成类,如下所示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PropertyType", propOrder = { "content" })
public class PropertyType {

    @XmlMixed
    protected List<Serializable> content;
    @XmlAttribute(name = "id")
    protected String id;

    public List<Serializable> getContent() {
        if(content == null) {
            content = new ArrayList<Serializable>();
        }
        return this.content;
    }

    public String getId() {
        return id;
    }

    public void setId(String value) {
        this.id = value;
    }

}

一个看起来像这样的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<portfolio>
    <items>
        <item>
            <property id="firstname">John</property>
            <property id="lastname">Doe</property>
        </item>
    </items>
</portfolio>

如您所见,我需要检查属性id的值以检索我想要的内容。

在我的代码中已经转换为很多if,因为我需要为每个item检索大量信息,并且我必须根据{{1}应用其他控件找到了。例如:

content

我的问题在于我需要实现需要考虑两个或多个属性的值的控件,而我无法使用上面的代码。

因此,我正在尝试在我的jaxb生成的类中编写一个自定义方法,这将获得if(propertyType.getId().equals("firstname")) { if(propertyType.getContent.get(i).equals("John")) { // Do something } } 的{​​{1}}给定content我将提供。

我尝试以不同的方式编写它,但由于property类型的id而经常出现问题。

更重要的是,当我尝试使用我的新方法时,我意识到它从未考虑过我在参数中使用的List<Serializable>

在没有为我的案例找到解决方案的情况下研究类似问题后,我最终编写了这个(非常)不理想的代码:

content

它仍然没有考虑我在参数中使用的id,返回它可以找到的每个内容。

可以做什么,因此这种方法会考虑作为参数给出的public List<Serializable> getContentById(final String id) { if(id.equals(id)) { return this.content; } List<Serializable> idNotEqual = null; return idNotEqual; }

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

它仍然没有考虑我在参数中使用的id,返回它可以找到的每个内容。

在大多数情况下,

id.equals(id)会返回true。你可能意味着this.id.equals(id)