29 Temmuz 2011 Cuma

Castor ile HashMap objesini XML'e Çevirme ve Geri Oluşturma

Merhabalar,

Bugün Castor ile projelere devam ettim. Bu sefer önümdeki problem sınıfın içinde başka bir sınıf objelerini tutan hashmap objesini nasıl XML'e aktarırım ve oradan geri nasıl okurum(marshalling ve unmarshalling) oldu. Bunu küçük bir araştırma ve denemelerden sonra çözdüm. Burada olayı nested class olarak çözmeye çalışmamız gerekiyor. mapping.xml i aşağıya koyuyorum daha anlaşılır olacaktır.

mapping.xml

<?xml version="1.0"?>
<mapping>
        <class name="HeadQuarter">
            <map-to xml="HQ"></map-to>
            <field name="name" type="string">
                <bind-xml name="Name" node="attribute" />
            </field>
            <field name="size" type="integer">
                <bind-xml name="Size" node="attribute" />
            </field>
            <field name="rooms" type="string" collection="arraylist">
                <bind-xml name="Rooms" node="element"></bind-xml>
            </field>
            <field name="floors" type="string" collection="vector">
                <bind-xml name="Floors" node="element"></bind-xml>
            </field>
            <field name="dob" type="date">
                <bind-xml name="building-date" node="element"></bind-xml>
            </field>
            <field name="branchName" type="string">
                <bind-xml name="branch_name" node="attribute"></bind-xml>
            </field>
            <field name="numberOfWorkers" type="integer">
                <bind-xml name="number_of_workers" node="element"></bind-xml>
            </field>
            <field name="map" collection="map"> <!-- Birinci map java kısmındaki HashMap objesinin adı, ikincisi ise collection tipi(Yani bildiğimiz java.util.Hashmap'ın kısaltması) -->
                <bind-xml name="mappp" node="element">
                <class name="org.exolab.castor.mapping.MapItem"> <!-- içiçe sınıf -->
                    <field name="key" type="java.lang.String">  <!-- hashmap key'i -->
                        <bind-xml name="key"/>
                    </field>
                    <field name="value" type="Branch"/>  <!-- Hashmap'ta tutulan obje -->
                </class>
                </bind-xml>
            </field>
        </class>               
            <class name="Branch"> <!-- Branch sınıfı tanımlaması -->
                <map-to xml="Branch"></map-to>
                <field name="branchName" type="string">
                    <bind-xml name="branch_name" node="element"></bind-xml>
                </field>
                <field name="numberOfWorkers" type="integer">
                    <bind-xml name="number_of_workers" node="element"></bind-xml>
                </field>
            </class>
</mapping>


Kodları koymuyorum fakat aklınıza takılan herhangi birşey olursa sorabilirsiniz. Şimdilik bu kadar, kolay gelsin.

Hiç yorum yok:

Yorum Gönder