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;
}
}
- StAX读XML小例子
- stax解析XML的一个例子
- XML-----StAX
- StAX 生成XML文件
- StAX处理XML
- STAX XML 解析
- 使用 StAX 解析 XML
- JAVA解析XML(StAX)
- 使用 StAX 解析 XML
- 使用Stax解析XML
- stax读取xml文件
- XML STAX样例
- Java XML StAX
- STAX XML 解析
- stax方法解析XML
- Stax 解析xml文件
- stax 解析xml
- XML - StAX示例
- linux多线程设计
- 善用分布式版本管理系统管理个人代码
- 如何选择老板和公司?
- Debian中apt-get,aptitude和dpkg的区别
- 周末
- StAX读XML小例子
- jquery offset
- 共享才能进步
- Cocoa数据类型
- Cocoa中的Text
- Java/jsp 好的入门文章共赏
- 《中华人民共和国宪法》第四十条
- Java编程中的异常处理
- 希特勒对戈培尔说的话