Android SAX读取XML内容

products.xml 缓存

<?xml version="1.0" encoding="utf-8"?>
<products>
    <product>
        <id>10</id>
        <name>电脑</name>
        <price>2067.25</price>
    </product>
    <product>
        <id>20</id>
        <name>微波炉</name>
        <price>520</price>
    </product>
</products>

 

工具类 app

public class XML2Product extends DefaultHandler {
 // 该变量用于保存转换后的结果
 private List<Product> products;
 private Product product;
 private StringBuffer buffer = new StringBuffer(); ide

 public List<Product> getProducts() {
  return products;
 } 工具

 @Override
 public void characters(char[] ch, int start, int length) throws SAXException {
  buffer.append(ch, start, length);
  super.characters(ch, start, length);
 } spa

 @Override
 public void endDocument() throws SAXException {
  // TODO Auto-generated method stub
  super.endDocument();
 } xml

 @Override
 public void endElement(String uri, String localName, String qName) throws SAXException {
  // 遇到<product>节点后将startElement方法中的Product对象添加到List对象Products中
  if (localName.equals("product")) {
   products.add(product);
  } else if (localName.equals("id")) {
   product.setId(Integer.valueOf(buffer.toString().trim()));
   buffer.setLength(0);// 清空缓存区
  } else if (localName.equals("name")) {
   product.setName(buffer.toString().trim());
   buffer.setLength(0);// 清空缓存区
  } else if (localName.equals("price")) {
   product.setPrice(Float.valueOf(buffer.toString().trim()));
   buffer.setLength(0);// 清空缓存区
  }
  super.endElement(uri, localName, qName);
 } 对象

 @Override
 public void startDocument() throws SAXException {
  products = new ArrayList<Product>();
 } utf-8

 @Override
 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
  // 当遇到<product>节点时建立Product对象
  if (localName.equals("product")) {
   product = new Product();
  }
  super.startElement(uri, localName, qName, attributes);
 } get

} io

调用

 InputStream is = getResources().getAssets().open("products.xml");    XML2Product xmlProduct=new XML2Product();    Xml.parse(is, Xml.Encoding.UTF_8, xmlProduct);    List<Product> products = xmlProduct.getProducts();
相关文章
相关标签/搜索