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;
}
}
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
Post a Comment