Добавление элемента по умолчанию в XML с использованием JAXB - PullRequest
0 голосов
/ 29 августа 2018

Я недавно начал изучать JAXB, и у меня два дня застревал вопрос, я немного изучал Интернет, но не нашел желаемого ответа. Нужна помощь. (PS: вопрос может быть слишком тупой, пожалуйста, голый)

Всякий раз, когда мы создаем XML с использованием JABX, он автоматически добавляет заголовок XML, например, выходные данные могут быть:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CstmrCdtTrfInitn>
.
.
.
</CstmrCdtTrfInitn>

Итак, здесь добавляется строка версии XML. Я хочу, чтобы тег по умолчанию присутствовал во всех XML-файлах, сгенерированных программой, например:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.08">
<CstmrCdtTrfInitn>
.
.
.
</CstmrCdtTrfInitn>
</Document>

Здесь тег Document должен присутствовать по умолчанию для любого сгенерированного XML.

Ниже приведен мой класс utiliy для создания объекта JAXBContext, создания объекта marshall и генерации XML, который вызывается в основной функции драйвера для.

public class JaxbUtil {

    public static <E> JAXBContext create_context_obj(E obj) 
    {
        System.out.println("Creating JAXB Context Object......");
        try {
            return JAXBContext.newInstance(obj.getClass());
        } catch (JAXBException e) {
            System.out.println("JAXBException: Exception thrown in create_context_obj function");
            e.printStackTrace();
        }
        return null;
    } 

    public static Marshaller create_marshall_obj(JAXBContext contextObj)
    {
        System.out.println("Generating JAXB Marshaller......");
        try {
            return contextObj.createMarshaller();
        } catch (JAXBException e) {
            System.out.println("JAXBException: Exception thrown in create_marshall_obj function");
            e.printStackTrace();
        }
        return null;
    }

    public static <E> void generate_xml(Marshaller marshallerObj,String fileName,E obj)
    {
        System.out.println("Generating "+fileName+"......");
        try {
            marshallerObj.marshal(obj, new FileOutputStream(fileName));
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException: Exception thrown in generate_xml_obj function ");            
            e.printStackTrace();
            System.exit(1);
        } catch (JAXBException e) {
            System.out.println("JAXBException: Exception thrown in generate_xml function ");                    
            e.printStackTrace();
            System.exit(1);
        }
    }
}

И вот мой основной класс водителя:

public class Driver{
    public static void main(String[] args) 
    {       
        String file_name="pain.001.001.08.xml";
        JAXBContext contextObj= JaxbUtil.create_context_obj(new Document());             
        if(contextObj == null)
        {
            System.out.println("Process terminated due to JAXBException");
            System.exit(1);
        }

        /*2.    Create Marshaler object*/
        Marshaller marshallerObj = JaxbUtil.create_marshall_obj(contextObj);
        if(marshallerObj==null)
        {
            System.out.println("Process terminated due to JAXBException");
            System.exit(1);
        }
        else
        {
            try {               
                marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            } catch (PropertyException e) {
                System.out.println("JAXBException: Exception thrown in marshallerObj.setProperty function");
                System.out.println("Process terminated due to JAXBException");
                e.printStackTrace();
            }
        }
        /* --- Create XML objects - START --- */
        String id1="8d0bf39a-dc8a-4e38-8cdd-28eabbd79e8";
        String AnyBIC="ONPJUR9JN26";
        String MsgId="3f93b34c-8b69-4b0c-bcee-d181881cc95";
        String CreDtTm="2017-03-31T18:51:44.018+03:00";
        String xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.08";

        Othr othr_Info=new Othr(id1);
        OrgId OrglId_Info=new OrgId(AnyBIC,othr_Info);
        Id id_info=new Id(OrglId_Info);
        InitgPty InitgPty_info=new InitgPty(id_info);
        CstmrCdtTrfInitn crdrInfo=new CstmrCdtTrfInitn(MsgId,CreDtTm,InitgPty_info);

        /* --- Create XML objects - END  ---  */

        /*3.    GENERATE XML */
        JaxbUtil.generate_xml(marshallerObj,file_name,crdrInfo);        
        System.out.println( file_name + " : XML GENERATED, PROCESS COMPLETED SUCCESSFULLY");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...