按照下述例子,可以把xml读到内存中,以Bean的形式存在,
=========================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book catalog="Programming">
<title lang="en">C++ Programming Language</title>
<author>Bjarne Stroustrup</author>
<year>1998</year>
<price>98.0</price>
</book>
<book catalog="Networking">
<title lang="en">TCP/IP Illustrated</title>
<author>Richard Stevens</author>
<year>1996</year>
<price>56.0</price>
</book>
</bookstore>
=========================================================
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
public class XmlTest
{
/**
* @param args
*/
public static void main(String[] args)
{
try
{
List<BookBean> list = readXmlByStAX(XmlTest.class
.getResourceAsStream("bookstore.xml"));
System.out.println(list);
} catch (XMLStreamException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static List<BookBean> readXmlByStAX(InputStream stream)
throws XMLStreamException
{
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(stream);
List<BookBean> list = new ArrayList<BookBean>();
BookBean bean = null;
try
{
int event = reader.getEventType();
while (true)
{
switch (event)
{
case XMLStreamConstants.START_DOCUMENT:
// System.out.println("Start Document.");
break;
case XMLStreamConstants.START_ELEMENT:
// System.out.println("Start Element: " + reader.getName());
if (reader.getLocalName().equals("book"))
{
bean = new BookBean();
}
if (reader.getLocalName().equals("author"))
{
bean.setAuthor(reader.getElementText());
} else if (reader.getLocalName().equals("title"))
{
bean.setTitle(reader.getElementText());
} else if (reader.getLocalName().equals("year"))
{
bean.setYear(reader.getElementText());
} else if (reader.getLocalName().equals("price"))
{
bean.setPrice(reader.getElementText());
}
// if (reader.getLocalName().equals("title"))
// {
// for (int i = 0, n = reader.getAttributeCount(); i < n;
// ++i)
// System.out.println("Attribute: "
// + reader.getAttributeName(i) + "="
// + reader.getAttributeValue(i));
// }
break;
case XMLStreamConstants.CHARACTERS:
if (reader.isWhiteSpace())
break;
// System.out.println("Text: " + reader.getText());
break;
case XMLStreamConstants.END_ELEMENT:
if(reader.getLocalName().equals("book"))
{
list.add(bean);
}
// System.out.println("End Element:" + reader.getName());
break;
case XMLStreamConstants.END_DOCUMENT:
// System.out.println("End Document.");
break;
}
if (!reader.hasNext())
break;
event = reader.next();
}
} finally
{
reader.close();
}
return list;
}
}
=====================================================================
public class BookBean
{
private String category;
private String title;
private String lang;
private String year;
private String price;
private String author;
public String getAuthor()
{
return author;
}
public void setAuthor(String author)
{
this.author = author;
}
public String getCategory()
{
return category;
}
public void setCategory(String category)
{
this.category = category;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getLang()
{
return lang;
}
public void setLang(String lang)
{
this.lang = lang;
}
public String getYear()
{
return year;
}
public void setYear(String year)
{
this.year = year;
}
public String getPrice()
{
return price;
}
public void setPrice(String price)
{
this.price = price;
}
@Override
public String toString()
{
return "title = " + title + ";author = " + author + ";year = " + year
+ ";price = " + price;
}
}