How to fetch large size XML document values by StaX using Java?

package com.main.File;
public class BulkFileSeparationReader {
    public static void main(String[] args) throws ClassNotFoundException {

        String fileName = "combine.xml";
               List<BookSpecBean> bookspec2 = (List<BookSpecBean>) parseXML2(fileName);
        for(BookSpecBean bean : bookspec){
//          System.out.println(bean.recordreferencechar);
//           System.out.println(bean.pricetypecodechar);
//          System.out.println(bean.priceamountchar);
//          System.out.println(bean.currencycodechar);
//         
//          System.out.println(bean.toString());
//         
          new Query().InsertMetaData1(bean);
        }
private static List<BookSpecBean> parseXML2(String fileName) {
        List<BookSpecBean> empList = new ArrayList<>();
        BookSpecBean emp = null;
        XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
        try {
            XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new FileInputStream(fileName));
            while(xmlEventReader.hasNext()){
                XMLEvent xmlEvent = xmlEventReader.nextEvent();
               if (xmlEvent.isStartElement()){
                   StartElement startElement = xmlEvent.asStartElement();
                   if(startElement.getName().getLocalPart().equals("Product")){
                       emp = new BookSpecBean();
                       //Get the 'id' attribute from Employee element
                       //Attribute idAttr = startElement.getAttributeByName(new QName("id"));
                       //if(idAttr != null){
                       //emp.setId(Integer.parseInt(idAttr.getValue()));
                       //}
                   }
                   //set the other varibles from xml elements
                   else if(startElement.getName().getLocalPart().equals("RecordReference")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setRecordreferencechar(xmlEvent.asCharacters().getData());
                   }
                   else if(startElement.getName().getLocalPart().equals("SequenceNumber")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setSequencenumberchar(xmlEvent.asCharacters().getData());
                   }else if(startElement.getName().getLocalPart().equals("ContributorRole")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setContributorrolechar(xmlEvent.asCharacters().getData());
                   }else if(startElement.getName().getLocalPart().equals("PersonName")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setPersonnamechar(xmlEvent.asCharacters().getData());
                   }else if(startElement.getName().getLocalPart().equals("PersonNameInverted")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setPersonnameinvertedchar(xmlEvent.asCharacters().getData());
                   }else if(startElement.getName().getLocalPart().equals("NamesBeforeKey")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setNamebeforekeychar(xmlEvent.asCharacters().getData());
                   }else if(startElement.getName().getLocalPart().equals("KeyNames")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setKeynameschar(xmlEvent.asCharacters().getData());
                   }
                  
                   else if(startElement.getName().getLocalPart().equals("PriceTypeCode")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setPricetypecodechar(xmlEvent.asCharacters().getData());
                   }else if(startElement.getName().getLocalPart().equals("PriceAmount")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setPriceamountchar(xmlEvent.asCharacters().getData());
                   }else if(startElement.getName().getLocalPart().equals("CurrencyCode")){
                       xmlEvent = xmlEventReader.nextEvent();
                       emp.setCurrencycodechar(xmlEvent.asCharacters().getData());
                   }
               }
               //if Employee end element is reached, add employee object to list
               if(xmlEvent.isEndElement()){
                   EndElement endElement = xmlEvent.asEndElement();
                   if(endElement.getName().getLocalPart().equals("Product")){
                       empList.add(emp);
                   }
               }
            }
            
        } catch (FileNotFoundException | XMLStreamException e) {
            e.printStackTrace();
        }
        return empList;
    }
}

Bean Class
----------------
public class BookSpecBean {
   
      @Getter @Setter public String recordreferencechar;
    @Getter @Setter public String sequencenumberchar;
    @Getter @Setter public String contributorrolechar;
    @Getter @Setter public String personnamechar;
    @Getter @Setter public String personnameinvertedchar;
    @Getter @Setter public String textnamesbeforekey;
    @Getter @Setter public String namebeforekeychar;
    @Getter @Setter public String keynameschar;
    @Getter @Setter public String pricetypecodechar;
    @Getter @Setter public String suppliernamechar;
    @Getter @Setter public String priceamountchar;
    @Getter @Setter public String currencycodechar;
   
@Override
    public String toString() {
        return "Product:: RecordReference="+this.recordreferencechar+" SequenceNumber=" + this.sequencenumberchar + " ContributorRole=" + this.contributorrolechar + " PersonName=" + this.personnamechar + " PersonNameInverted=" + this.personnameinvertedchar + " NamesBeforeKey=" + this.namebeforekeychar + " KeyNames=" + this.keynameschar +
                " PriceTypeCode=" + this.pricetypecodechar+ " PriceAmount=" + this.priceamountchar+ " Currencycode=" + this.currencycodechar;
    }
   
   
}




Comments

Popular posts from this blog

How do i Increase the capacity of the Eclipse Output console?

An internal error occurred during: "Building workspace". Java heap space

How to convert the Math Number to Words in Java?