products.xml 緩存
<?xml version="1.0" encoding="utf-8"?>
工具類 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();