android操做xml封裝後的類,包括建立xml和讀xml。java
public class XmlParserUtil { //建立xml文件 public static void createXmlFile(final String xmlPath) { File xmlFile = new File(xmlPath); FileOutputStream fileOPStream = null; try { fileOPStream = new FileOutputStream(xmlFile); } catch (FileNotFoundException e) { Log.e("FileNotFoundException", "can't create FileOutputStream"); } XmlSerializer serializer = Xml.newSerializer(); try { serializer.setOutput(fileOPStream,"UTF-8"); serializer.startDocument(null, true); serializer.startTag(null, "books"); for(int i = 0; i < 5; i ++) { serializer.startTag(null, "book"); serializer.startTag(null, "bookname"); serializer.text("Android教程" + i); serializer.endTag(null, "bookname"); serializer.startTag(null, "bookauthor"); serializer.text("Frankie" + i); serializer.endTag(null, "bookauthor"); serializer.endTag(null, "book"); } serializer.endTag(null, "books"); serializer.endDocument(); serializer.flush(); fileOPStream.close(); } catch (Exception e) { Log.e("XmlParserUtil","error occurred while creating xml file"); } Toast.makeText(getApplicationContext(), "建立xml文件成功!", Toast.LENGTH_SHORT).show(); } /** dom解析xml文件 * xmlPath xml的路徑 */ public static void domParseXML(final String xmlPath) { File file = new File(xmlPath); if(!file.exists()||file.isDirectory()) { Log.e("domParseXML", "file not exists"); return; } DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } Document doc = null; try { doc = db.parse(file); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Element root = doc.getDocumentElement(); NodeList books = root.getElementsByTagName("book"); String res = "本結果是經過dom解析:" + "\n"; for(int i = 0; i < books.getLength();i++) { Element book = (Element)books.item(i); Element bookname = (Element)book.getElementsByTagName("bookname").item(0); Element bookauthor = (Element)book.getElementsByTagName("bookauthor").item(0); res += "書名: " + bookname.getFirstChild().getNodeValue() + " " + "做者: " + bookauthor.getFirstChild().getNodeValue() + "\n"; } } /** xmlPullParser解析xml文件 * xmlPath xml的路徑 */ public static void xmlPullParseXML(final String xmlPath) { String res = "本結果是經過XmlPullParse解析:" + "\n"; try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser = factory.newPullParser(); try { xmlPullParser.setInput(new StringReader(bufferedReaderFile(xmlPath))); } catch (Exception e) { Log.e("xmlPullParseXML", e.toString()); } int eventType = xmlPullParser.getEventType(); try { while (eventType != XmlPullParser.END_DOCUMENT) { String nodeName = xmlPullParser.getName(); switch (eventType) { case XmlPullParser.START_TAG: if("bookname".equals(nodeName)) { res += "書名: " + xmlPullParser.nextText() + " "; } else if("bookauthor".equals(nodeName)) { res += "做者: " + xmlPullParser.nextText() + "\n"; } break; default: break; } eventType = xmlPullParser.next(); } } catch (IOException e) { e.printStackTrace(); } } catch (XmlPullParserException e) { e.printStackTrace(); } } //從sd卡中讀取xml文件的內容 private String bufferedReaderFile(final String path) throws IOException { File file=new File(path); if(!file.exists()||file.isDirectory()) throw new FileNotFoundException(); BufferedReader br=new BufferedReader(new FileReader(file)); String temp=null; StringBuffer sb=new StringBuffer(); temp=br.readLine(); while(temp!=null) { sb.append(temp+" "); temp=br.readLine(); } br.close(); return sb.toString(); } }