我正在尝试创建一个具有ArrayList的类。 例如:
public class SubCategory {
protected String nameOfCategory;
@XmlElement(required = true)
protected String link;
@XmlElementRef
protected List<SubCategory> supCategory;...
}
如何获取SubCategory的最后一个列表?我使用JAXB for xml文件,xsd文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/CategoriesTree" xmlns="http://www.example.org/CategoriesTree"
elementFormDefault="qualified">
<xs:element name="Categories">
<xs:complexType>
<xs:sequence>
<xs:element name="mainCategory" type="subCategory" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="subCategory">
<xs:sequence>
<xs:element name="nameOfCategory" type="xs:string"/>
<xs:element name="link" type="xs:string"/>
<xs:element name="subCategory" type="subCategory" maxOccurs="unbounded"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
是的我有这个方法,但我必须去树中的最后一个元素,例如: 如何获得最后一个元素?
<code>
<subCategory>
<nameOfCategory>Ordnungsmittel / Ablagemittel</nameOfCategory>
<link>link=Ordnungsmittel / Ablagemittel</link>
<subCategory>
<nameOfCategory>Ordnungsmittel / Ablagemittel</nameOfCategory>
<link>link=Ordnungsmittel / Ablagemittel</link>
<subCategory>
<nameOfCategory>Last</nameOfCategory>
<link>link=Last</link>
</subCategory>
</subCategory>
</subCategory>
</code>
答案 0 :(得分:0)
我不确定你想要完成什么。我从我的一个项目中获取了一个生成的类,并且在XSD中定义的列表就像在Java类中一样创建:
@XmlElement(required = true)
protected List<Manager> manager;
public List<Manager> getManager() {
if (manager == null) {
manager = new ArrayList<Manager>();
}
return this.manager;
}
如果要在列表中添加内容,则还必须使用get方法来获取引用。
答案 1 :(得分:0)
如何获取SubCategory的最后一个列表?
由于您有一个树,其中每个节点具有相同的类型(SubCategory
),您可以编写一个递归函数,该函数将SubCategory
的实例作为参数导航到最后一个叶子并返回int。
答案 2 :(得分:0)
没有'最后一个列表',因为在同一级别可以有多个元素! 要检索最后标记的那个,你需要一个递归循环,或者你可以更好地建模它!
答案 3 :(得分:0)
好的,我做到了:)感谢您的回复。
public void showTree(List<SubCategory> child){
for(int i=child.size()-1; i>=0; i--){
if(!child.get(i).getSupCategory().isEmpty()){
System.out.println(child.get(i).getNameOfCategory());
showTree(child.get(i).getSupCategory());
}
else{
System.out.println(child.get(i).getNameOfCategory());
//child.remove(i);
}
}