Пример отображения Spring Object/XML

Пример сопоставления Spring Object / XML

Spring / Object Mapping - это преобразование Object в XML или наоборот. Этот процесс также известен как

  1. XML Marshalling - преобразовать объект в XML.

  2. XML UnMarshalling - преобразовать XML в объект.

В этом руководстве мы покажем вам, как использовать Oxm Spring для преобразованияObject XML.

Note
Никакой ерунды, почему и какие преимущества использования Spring Oxm, прочтите эту статьюofficial Spring Object/XML mapping.

1. Зависимость проекта

Зависимости в этом примере.

Note
Oxm сам по себе не обрабатывает XML-маршаллинг или демаршалинг, это зависит от разработчика, чтобы внедрить свою предпочтительную структуру привязки XML. В этом случае вы будете использовать привязку Castor Framework.

    
        3.0.5.RELEASE
    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-context
            ${spring.version}
        

        
        
            org.springframework
            spring-oxm
            ${spring.version}
        

        
        
            org.codehaus.castor
            castor
            1.2
        

        
        
            xerces
            xercesImpl
            2.8.1
        

    

2. Простой объект

Простой объект, затем преобразовать его в файл XML.

package com.example.core.model;

public class Customer {

    String name;
    int age;
    boolean flag;
    String address;

    //standard getter, setter and toString() methods.
}

3. Маршаллер и маршаллер

Этот класс будет обрабатывать преобразование через интерфейсы Oxm Spring:Marshaller иUnmarshaller.

package com.example.core;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;

public class XMLConverter {

    private Marshaller marshaller;
    private Unmarshaller unmarshaller;

    public Marshaller getMarshaller() {
        return marshaller;
    }

    public void setMarshaller(Marshaller marshaller) {
        this.marshaller = marshaller;
    }

    public Unmarshaller getUnmarshaller() {
        return unmarshaller;
    }

    public void setUnmarshaller(Unmarshaller unmarshaller) {
        this.unmarshaller = unmarshaller;
    }

    public void convertFromObjectToXML(Object object, String filepath)
        throws IOException {

        FileOutputStream os = null;
        try {
            os = new FileOutputStream(filepath);
            getMarshaller().marshal(object, new StreamResult(os));
        } finally {
            if (os != null) {
                os.close();
            }
        }
    }

    public Object convertFromXMLToObject(String xmlfile) throws IOException {

        FileInputStream is = null;
        try {
            is = new FileInputStream(xmlfile);
            return getUnmarshaller().unmarshal(new StreamSource(is));
        } finally {
            if (is != null) {
                is.close();
            }
        }
    }

}

4. Конфигурация пружины

В файле конфигурации bean-компонента Spring вставьтеCastorMarshaller в качестве структуры привязки XML.



    
        
        
    
    

5. Test

Запустить его.

package com.example.core;

import java.io.IOException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.example.core.model.Customer;

public class App {
    private static final String XML_FILE_NAME = "customer.xml";

    public static void main(String[] args) throws IOException {
        ApplicationContext appContext = new ClassPathXmlApplicationContext("App.xml");
        XMLConverter converter = (XMLConverter) appContext.getBean("XMLConverter");

        Customer customer = new Customer();
        customer.setName("example");
        customer.setAge(30);
        customer.setFlag(true);
        customer.setAddress("This is address");

        System.out.println("Convert Object to XML!");
        //from object to XML file
        converter.convertFromObjectToXML(customer, XML_FILE_NAME);
        System.out.println("Done \n");

        System.out.println("Convert XML back to Object!");
        //from XML to object
        Customer customer2 = (Customer)converter.convertFromXMLToObject(XML_FILE_NAME);
        System.out.println(customer2);
        System.out.println("Done");

    }
}

Выход

Convert Object to XML!
Done

Convert XML back to Object!
Customer [name=example, age=30, flag=true, address=This is address]
Done

Следующий XML-файл «customer.xml» создается в корневой папке вашего проекта.

Файл: customer.xml



    
This is address
example

Castor XML Mapping

Подождите, почему флаг и возраст конвертируются как атрибут? Это способ контролировать, какое поле следует использовать в качестве атрибута или элемента? Конечно, вы можете использоватьCastor XML mapping для определения отношения между Object и XML.

Создайте следующий файл сопоставления и поместите его в classpath вашего проекта.

Файл: mapping.xml


    

        

        
            
        

        
            
        

        
            
        

        
            
        
    

В файле конфигурации bean-компонента Spring введите вышеmapping.xml в CastorMarshaller через «mappingLocation».



    
        
        
    
    
        
    

Протестируйте еще раз, XML-файл «customer.xml» будет обновлен.

Файл: customer.xml



    true
    example
    
This is address

Скачать исходный код

Скачать -Spring3-Object-XML-Mapping-Example.zip (7 КБ)