使用 STAX XMLStreamWriter 合并 XML [英] merge XML using STAX XMLStreamWriter

查看:36
本文介绍了使用 STAX XMLStreamWriter 合并 XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 STAX 和 XMLStreamWriter 创建了一个 XML.它工作正常.

I have created an XML using STAX and XMLStreamWriter. It works fine.

我需要将两个 xml 合并在一起.我面临的问题是患者 Pojo 向我返回包含所有患者信息的 XML 如下

I need to merge two xml together. The problem that I am facing is the patient Pojo returns me XML containing all the patient information is below

   <Patient>
    <SocialSecurity>3333344</SocialSecurity>
    <Name>
    <LastName>pillai</LastName>
    <FirstName>dhanya</FirstName>
    <Name>
    <Patient>

我需要在 之后将其添加到现有的 XML 中,例如合并.

I need to add this into existing XML after <proID> like merging.

<?xml version="1.0" ?>
  <Validate>
    <proID>123</prodID>
</Validate>

请指教

推荐答案

答案如下

public static void main(String[] args) throws Throwable {
     XMLEventWriter eventWriter;
        XMLEventFactory eventFactory;
        XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        eventWriter = outputFactory.createXMLEventWriter(bos);
        eventFactory = XMLEventFactory.newInstance();
        XMLEvent newLine = eventFactory.createDTD("\n");                
        // Create and write Start Tag
        StartDocument startDocument = eventFactory.createStartDocument();
        eventWriter.add(startDocument);
        eventWriter.add(newLine);
        StartElement configStartElement = eventFactory.createStartElement("","","Message");
        eventWriter.add(configStartElement);
        eventWriter.add(newLine);

        XMLInputFactory inputFactory = XMLInputFactory.newFactory();


            PatientDetails patientDetails= new PatientDetails();// Here I have called an POJO that return String and we add
            String xml = patientDetails.getPatientDetails();

            Source src = new StreamSource(new java.io.StringReader(xml));

            XMLEventReader test = inputFactory.createXMLEventReader(src);
            while(test.hasNext()){
                XMLEvent event= test.nextEvent();
            //avoiding start(<?xml version="1.0"?>) and end of the documents;
            if (event.getEventType()!= XMLEvent.START_DOCUMENT && event.getEventType() != XMLEvent.END_DOCUMENT)
                    eventWriter.add(event);         
           // eventWriter.add(newLine);
                test.close();
            } //end of while  

        eventWriter.add(eventFactory.createEndElement("", "", "Message"));
        eventWriter.add(newLine);
        eventWriter.add(eventFactory.createEndDocument());
        eventWriter.close();

        System.out.println(bos.toString());
  }//end of main 

这篇关于使用 STAX XMLStreamWriter 合并 XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆