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();
相關文章
相關標籤/搜索