Skip to content

Instantly share code, notes, and snippets.

@digvijaybhakuni
Last active May 19, 2016 12:18
Show Gist options
  • Save digvijaybhakuni/712370b195f3bf97480c to your computer and use it in GitHub Desktop.
Save digvijaybhakuni/712370b195f3bf97480c to your computer and use it in GitHub Desktop.
package com.dgstack.dev;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import com.dgstack.dev.vo.UserVO;
/**
* @author digvijayb
*/
public class StAXReader {
public List<UserVO> getUserList(String path) throws FileNotFoundException, XMLStreamException{
StartElement startElement = null;
EndElement endElement = null;
Attribute attribute = null;
QName idAttr =new QName("id");
XMLEvent event = null;
List<UserVO> list = null;
UserVO userVO = null;
String currentValue = "";
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLEventReader reader = inputFactory.createXMLEventReader(new FileReader(path));
while(reader.hasNext()){
event = reader.nextEvent();
if(event.isStartElement()){
startElement = event.asStartElement();
if("users".equals(startElement.getName().getLocalPart())){
list = new ArrayList<UserVO>();
}else if("user".equals(startElement.getName().getLocalPart())){
userVO = new UserVO();
attribute = startElement.getAttributeByName(idAttr);
userVO.setId(Integer.parseInt(attribute.getValue()));
}
}else if(event.isEndElement()){
endElement = event.asEndElement();
if("users".equals(endElement.getName().getLocalPart())){
break;
}else if("user".equals(endElement.getName().getLocalPart())){
list.add(userVO);
userVO = null;
}else if("name".equals(endElement.getName().getLocalPart())){
userVO.setName(currentValue.trim());
}else if("username".equals(endElement.getName().getLocalPart())){
userVO.setUserid(currentValue.trim());
}else if("password".equals(endElement.getName().getLocalPart())){
userVO.setPassword(currentValue.trim());
}else if("gender".equals(endElement.getName().getLocalPart())){
userVO.setGender(currentValue.trim());
}else if("age".equals(endElement.getName().getLocalPart())){
if(!currentValue.trim().isEmpty())
userVO.setAge(Integer.parseInt(currentValue.trim()));
}else if("location".equals(endElement.getName().getLocalPart())){
userVO.setLocation(currentValue.trim());
}
}else if (event.isCharacters() && userVO != null && startElement != null) {
currentValue = event.asCharacters().getData();
}
}
return list;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment