Java 使用STAX XMLStreamWriter合并XML

Java 使用STAX XMLStreamWriter合并XML,java,xml,java-6,Java,Xml,Java 6,我使用STAX和XMLStreamWriter创建了一个XML。它很好用 我需要将两个xml合并在一起。我面临的问题是,patient Pojo返回给我包含所有患者信息的XML,如下所示 <Patient> <SocialSecurity>3333344</SocialSecurity> <Name> <LastName>pillai</LastName> <FirstName&g

我使用
STAX
和XMLStreamWriter创建了一个
XML
。它很好用

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

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

3333344
皮莱
达尼亚
像合并一样,我需要在
之后将其添加到现有XML中

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

123
请告知

答案如下

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 
publicstaticvoidmain(String[]args)抛出Throwable{
XMLEventWriter事件编写器;
XMLEventFactory事件工厂;
XMLOutputFactory outputFactory=XMLOutputFactory.newInstance();
ByteArrayOutputStream bos=新建ByteArrayOutputStream();
eventWriter=outputFactory.createXMLEventWriter(bos);
eventFactory=XMLEventFactory.newInstance();
XMLEvent newLine=eventFactory.createDTD(“\n”);
//创建并写入开始标记
StartDocument StartDocument=eventFactory.createStartDocument();
eventWriter.add(startDocument);
eventWriter.add(换行符);
StartElement configStartElement=eventFactory.createStartElement(“,”,“消息”);
添加(配置StartElement);
eventWriter.add(换行符);
XMLInputFactory inputFactory=XMLInputFactory.newFactory();
PatientDetails PatientDetails=new PatientDetails();//这里我调用了一个返回字符串的POJO,然后添加
字符串xml=patientDetails.getPatientDetails();
sourcesrc=newstreamsource(newjava.io.StringReader(xml));
XMLEventReader测试=inputFactory.createXMLEventReader(src);
while(test.hasNext()){
XMLEvent事件=test.nextEvent();
//避免文档的开始()和结束;
if(event.getEventType()!=XMLEvent.START\u文档和event.getEventType()!=XMLEvent.END\u文档)
添加(事件);
//eventWriter.add(换行符);
test.close();
}//时间结束
添加(eventFactory.createEndElement(“,”,“Message”);
eventWriter.add(换行符);
添加(eventFactory.createEndDocument());
eventWriter.close();
System.out.println(bos.toString());
}//干管末端

第一位的最后一个
姓名
患者
标签应该是结束标签吗?对于那些正在寻找答案的人来说。