分享好友 编程学习首页 频道列表

android如何使用DOM和SAXParserFactory来解析XML文件

风华笔墨2022-10-05 09:34:31下载全文1463
对于以下的xml文件:


 rjzjhjjjjjj   bbbbccc   


这样来解析:



import java.util.ArrayList;import javax.xml.parsers.documentBuilder;import javax.xml.parsers.documentBuilderFactory;import org.w3c.dom.document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.res.AssetManager;import android.os.Bundle;import android.util.Log;public class TestActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);XmlReader();for(int i=0;imentElement();NodeList books = root.getChildNodes();if (books != null) {for (int i = 0; i < books.getLength(); i++) {Node book = books.item(i);Book mybook = null;if (book.getNodeType() == Node.ELEMENT_NODE) {//这里才表示这个是节点mybook = new Book();String email = book.getAttributes().getNamedItem("email").getNodevalue();mybook.email = email;for (Node node = book.getFirstChild(); node != null; node = node.getNextSibling()) {if (node.getNodeType() == Node.ELEMENT_NODE) {if (node.getNodeName().equals("name")) {String name1 = node.getFirstChild().getNodevalue();mybook.name = name1;}if (node.getNodeName().equals("price")) {String price = node.getFirstChild().getNodevalue();mybook.price = price;}}}list.add(mybook);}}}} catch (Exception e) {e.printStackTrace();}}private ArrayList list = new ArrayList();private class Book{String email;String name;String price;}


采用SAXParserFactory:


@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SAXParserFactory factory = SAXParserFactory.newInstance();try {SAXParser saxParser = factory.newSAXParser();InputStream is = this.getAssets().open("test1.xml", Context.MODE_PRIVATE);saxParser.parse(is, new MyDefaultHandler());} catch (Exception ex) {}System.out.println("===size=" + list.size());for (int i = 0; i < list.size(); i++) {Book book = list.get(i);Log.d("TAG", "name=" + book.name + "email=" + book.email);}}protected String getElementName(String name, String qName) {if ("".equals(name)) {return qName;} else {return name;}}class MyDefaultHandler extends DefaultHandler {private StringBuffer buf;private Book mBook;public MyDefaultHandler() {super();mBook = new Book();}protected StringBuffer getBuffer() {return this.buf;}@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {super.startElement(uri, localName, qName, attributes);buf = new StringBuffer();for (int i = 0; i < attributes.getLength(); i++) {String value = attributes.getValue(i);mBook.email = value;}}@Overridepublic void characters(char[] chars, int start, int length) throws SAXException {super.characters(chars, start, length);getBuffer().append(chars, start, length);}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {super.endElement(uri, localName, qName);String elementName = getElementName(localName, qName);if (elementName.equals("book")) {list.add(mBook);mBook = new Book();} else if (elementName.equals("name")) {mBook.name = getBuffer().toString();} else if (elementName.equals("price")) {mBook.price = getBuffer().toString();}}}private ArrayList list = new ArrayList();private class Book {String email;String name;String price;@Overridepublic String toString() {return "name=" + name + "price=" + price;}}

以上就是android如何使用DOM和SAXParserFactory来解析XML文件的内容,更多相关内容请关注好好学习网(www.haohaoxuexi.cc)!

立即下载
反对 0
举报 0
收藏 0
评论 0

评论

0

收藏

点赞