StAX读XML小例子

来源:互联网 发布:酷狗音乐无法连接网络 编辑:程序博客网 时间:2024/05/01 12:10

按照下述例子,可以把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;
 }
}

 

 

 

原创粉丝点击