-1

ArrayListを持つクラスを作成しようとしています。例えば:

public class SubCategory {
    protected String nameOfCategory;
    @XmlElement(required = true)
    protected String link;
    @XmlElementRef
    protected List<SubCategory> supCategory;...
}

サブカテゴリの最後のリストを取得するにはどうすればよいですか?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>
4

4 に答える 4

0

あなたが何を達成したいのかよくわかりません。プロジェクトの1つから生成されたクラスを取得すると、XSDに投稿したように定義されたリストが、Javaクラスで次のように作成されます。

@XmlElement(required = true)
protected List<Manager> manager;

public List<Manager> getManager() {
    if (manager == null) {
        manager = new ArrayList<Manager>();
    }
    return this.manager;
}

リストに何かを追加したい場合は、参照を取得するためにgetメソッドも使用する必要があります。

于 2013-01-28T13:45:21.250 に答える
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);

            }
        }
于 2013-01-29T10:03:42.740 に答える
0

サブカテゴリの最後のリストを取得するには?

各ノードが同じタイプ ( SubCategory) のツリーがあるため、 のインスタンスをSubCategoryパラメーターとして受け取り、最後のリーフまでナビゲートして int を返す再帰関数を作成できます。

于 2013-01-28T15:27:02.340 に答える
0

同じレベルに複数の要素が存在する可能性があるため、「最後のリスト」はありません! 最後にマークしたものを取得するには、再帰ループが必要です。または、より適切にモデル化することもできます!

于 2013-01-28T15:27:17.517 に答える