2011-11-11 7 views
4

小さなプロジェクトがあります。このプロジェクトでは、XMLソース/ファイルからVaadinツリーの一部のデータを表示する必要があります。VaadinツリーのデータソースとしてのXML

私の質問は:私はVaadinの木でそれを行うことができますか、それを実現するにはどうしたら "難しい"でしょうか?

私はVaadinのデモツリーを見てきました。彼らはすべてContainersをソースとして使用していますので、XMLで動作するかどうかはわかりません。

ImはXMLの新しいおよびJavaので、いくつかの便利なガイドを掲示すること自由に落ちた/ Javaライブラリの多くはそこにはXML処理用のproablablyあり

答えて

8

をリンクします。たとえば、XOMのように1つを取り出し、それをHierarchicalContainerに変換します。 XMLの読み取りを例にとり例えば

は、ここで見つける:http://bethecoder.com/applications/tutorials/xml-xom-read-xml.htmlとIndexedContainerに変換:私たちは今、そこにコードを修正し、コンテナにデータを投げることができる

<?xml version="1.0"?> 
<students> 
    <student> 
     <name>Sriram</name> 
     <age>2</age> 
    </student> 
    <student> 
     <name>Venkat</name> 
     <age>29</age> 
    </student> 
    <student> 
     <name>Anu</name> 
     <age>28</age> 
    </student>  
</students> 

Builder builder = new Builder(); 
InputStream ins = ReadXML.class.getClassLoader() 
     .getResourceAsStream("student_list.xml"); 

//Reads and parses the XML 
Document doc = builder.build(ins); 
Element root = doc.getRootElement(); 

IndexedContainer container = new IndexedContainer(); 
container.addContainerProperty("name", String.class, null); 
container.addContainerProperty("age", Integer.class, null); 
//Get children 
Elements students = root.getChildElements(); 
for (int i = 0 ; i < students.size() ; i ++) { 
    System.out.println(" Child : " + students.get(i).getLocalName()); 
    Object student = container.addItem(); 
    Item studentItem = container.getItem(student); 

    //Get first child with tag name as 'name' 
    Element nameChild = students.get(i).getFirstChildElement("name"); 
    if (nameChild != null) { 
    studentItem.getItemProperty("name").setValue(nameChild.getValue()); 
    } 
    Element ageChild = students.get(i).getFirstChildElement("age"); 
    if (ageChild != null) { 
     studentItem.getItemProperty("age").setValue(ageChild.getValue()); 
    } 
} 

これで、indexedcontainerをテーブルまたはツリーにプラグインすることができます。 xmlにツリー形式がある場合、それをHierarchicalContainerに変更し、コンテナでsetParentを使用できます。複数のプロパティを表示する場合は、TreeではなくTreeTableを使用する必要があります。ツリーには1つのプロパティしか表示されないためです。

関連する問題