2017-05-07 9 views
1

からJAXBで解析するXMLファイルを処理するために、次のような状況で私に助言を与えるために誰かができます: は、私は私のxmlファイルにこのような構造を持っている:どのように私はできませんルート要素

<?xml ... ?> 
    <root> 
    <listof_aaa> 
     <aaa>aaa_object</aaa> 
     <aaa>aaa_object</aaa> 
     ... 
    </listof_aaa> 
    <listof_bbb> 
     <bbb>bbb_object</bbb> 
     <bbb>bbb_object</bbb> 
     ... 
    </listof_bbb> 
    <listof_ccc> 
     <ccc>ccc_object</ccc> 
     <ccc>ccc_object</ccc> 
     ... 
    </listof_ccc> 
    </root> 

マイ目標は、最初にすべてのaaaオブジェクトを読み込み、次にbbbなどを読み取ることです。 ルートタグ内にオブジェクトのいくつかのファミリがある場合、このような構造を解析するにはどうすればよいですか?私はJAXBの使用について考えましたが、理解できません。この状況ではどのようにうまく動作するのですか?

P.S.オブジェクトのすべてのファミリはPOJOです。 ありがとうございました!あなたのケースで

+0

は、XMLスキーマを持っていますか?はいの場合、あなたのautogeneratedルートクラスのように見えますか? – Vitaliy

答えて

0

典型的な自動生成されたクラスは、次のようになります。

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "listof_aaa", 
    "listof_bbb", 
    "listof_ccc", 
    "listinside" 
}) 
@XmlRootElement(name = "root") 
public class Root { 

    @XmlElement(required = true) 
    protected Listof_aaa listof_aaa; 
    protected Listof_bbb listof_bbb; 
    protected Listof_ccc listof_ccc; 
    protected java.util.List<Listinside> listinside // example of multiple elements with one node name under the root 

    public Listof_aaa getListof_aaa() { 
     return listof_aaa; 
    } 

    public void setListof_aaa(Listof_aaa value) { 
     this.listof_aaa = value; 
    } 

    // other getters and setters 
    // and an example of multiple elements under the root 

    public java.util.List<Listinside> getListinside() { 
    if (listinside == null) { 
     listinside = new ArrayList<Listinside>(); 
    } 
    return this.sec; 
} 
} 

反復:

public static void main(String[] args) throws JAXBException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { 
     JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class); 
     Unmarshaller unmarhsaller = jaxbContext.createUnmarshaller(); 
     Root root = (Root) unmarhsaller.unmarshal(new File("pathToYourFile.xml")); 
     Listof_aaa listof_aa = root.getListof_aaa(); 

     /* and in case of a list */ 
     List<Listinside> listinside = root.getListinside(); 
     for (List myList : listinside) { 
      // do your stuff 
     } 
} 
+0

あなたのソリューションは素晴らしい作品です!あなたに感謝します。 –

関連する問題