首先,我对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;
}
?
提前感谢您的帮助!
答案 0 :(得分:0)
在大多数情况下,它仍然没有考虑我在参数中使用的
id
,返回它可以找到的每个内容。
id.equals(id)
会返回true
。你可能意味着this.id.equals(id)
。