I need to parse large xml. And I tried to do it in the following way:
Testing FilmParser.java class:
public class FilmParser {
public static void main(String args[]) throws IOException, Exception{
List<Film> filmList= new ArrayList<Film>();
String xml = "<?xml version='1.0' encoding='utf-8' ?> <film-list> <item company=\"New Line Cinema\" year=\"1995\" film=\"Se7en\" /> <item company=\"Warner Brothers\" year=\"2005\" film=\"Batman Begins\" /> <item company=\"Larner Brothers\" year=\"2010\" film=\"Inception\" /> </film-list>";
Document doc = loadXMLFromString(xml);
Node baseNode = doc.getFirstChild();
NodeList children = baseNode.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node item = children.item(i);
if (item.getNodeType() == Node.ELEMENT_NODE) {
String company = item.getAttributes().getNamedItem("company").getTextContent();
int year = Integer.parseInt(item.getAttributes().getNamedItem("year").getTextContent());
String film = item.getAttributes().getNamedItem("film").getTextContent();
Film filmObj = new Film(company, year, film);
filmList.add(filmObj);
System.out.println(filmObj);
}
}
}
private static Document loadXMLFromString(String xml) throws Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xml));
return builder.parse(is);
}
}
And Film.java class:
public class Film {
private String company;
private int year;
private String film;
public Film(){
}
public Film(String company, int year, String film) {
super();
this.company = company;
this.year = year;
this.film = film;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String getFilm() {
return film;
}
public void setFilm(String film) {
this.film = film;
}
@Override
public String toString() {
return "Film [company=" + company + ", year=" + year + ", film=" + film
+ "]";
}
}
Please explain how could I actually rewrite this using JAXB, and do not parse xml manually.
No comments:
Post a Comment