Android XML编程:创建与解析实战指南

0 下载量 83 浏览量 更新于2024-09-01 收藏 145KB PDF 举报
"Android编程创建与解析XML的常用方法详解,包括使用XmlSerializer创建XML文件,以及DOM和XmlPullParser解析XML文件的实例演示。" 在Android开发中,XML是一种广泛用于存储和传输数据的格式。本文主要介绍了如何在Android平台上创建和解析XML文件。XMLSerializer是Android提供的用于创建XML文件的工具,而DOM(Document Object Model)和XmlPullParser则是解析XML文件的两种常见方法。 首先,让我们看看如何使用XmlSerializer创建XML文件。以下是一个简单的步骤: 1. 创建一个XmlSerializer对象,通常通过`Xml.newSerializer()`初始化。 2. 设置输出流,可以是文件流或内存流,例如,将XML写入SD卡上的文件。 3. 开始序列化过程,调用`startDocument()`方法,指定字符编码和XML版本。 4. 使用`setPrefix()`、`startTag()`、`text()`、`endTag()`等方法构建XML结构。 5. 完成序列化,调用`endDocument()`方法。 例如,创建一个简单的XML文件`books.xml`,包含书籍列表: ```java XmlSerializer serializer = Xml.newSerializer(); FileOutputStream fos = new FileOutputStream("/sdcard/books.xml"); serializer.setOutput(fos, "utf-8"); serializer.startDocument("UTF-8", true); serializer.startTag(null, "books"); // 添加书籍项 serializer.startTag(null, "book"); serializer.attribute(null, "id", "1"); serializer.text("书名1"); serializer.endTag(null, "book"); // 添加更多书籍... serializer.endTag(null, "books"); serializer.endDocument(); fos.close(); ``` 接下来,我们讨论解析XML的两种方法:DOM和XmlPullParser。 DOM解析是一种将整个XML文档加载到内存中的解析方式,形成一个树形结构,便于访问和修改。使用DOM解析时,需要先调用`DocumentBuilderFactory`的`newDocumentBuilder()`方法,然后调用`parse()`方法加载XML文件。解析完成后,可以通过`getElementsByTagName()`等方法遍历XML节点。 而XmlPullParser是一种事件驱动的解析器,它逐行读取XML,当遇到开始标签、结束标签、文本等事件时,会触发相应的回调方法。使用XmlPullParser解析XML时,需要创建一个`XmlPullParserFactory`,通过`newPullParser()`获取`XmlPullParser`实例,设置输入源,然后调用`next()`方法遍历XML事件。 以下是一个使用DOM解析`books.xml`的示例: ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("/sdcard/books.xml")); NodeList bookNodes = doc.getElementsByTagName("book"); for (int i = 0; i < bookNodes.getLength(); i++) { Node bookNode = bookNodes.item(i); // 获取书籍ID和名称 String id = bookNode.getAttributes().getNamedItem("id").getTextContent(); String name = bookNode.getTextContent(); // 显示结果 } ``` 使用XmlPullParser解析的示例: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(new FileInputStream("/sdcard/books.xml"), "UTF-8"); int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG) { String tagName = parser.getName(); if ("book".equals(tagName)) { String id = parser.getAttributeValue(null, "id"); String name = parser.nextText(); // 显示结果 } } eventType = parser.next(); } ``` 每种解析方法都有其优缺点。DOM解析易于使用,但消耗内存;XmlPullParser则节省内存,但需要编写更复杂的解析逻辑。在实际开发中,可以根据项目需求和性能考虑选择合适的解析方式。对于大型XML文件,推荐使用XmlPullParser,而对于小型且结构简单的XML,DOM可能是更好的选择。 通过本文的实例,你可以了解到Android中创建XML文件和解析XML的基本方法。实践中,还可以结合实际情况,利用Android提供的其他工具如Pull解析库,或者使用第三方库如Jackson、Gson等进行XML处理,以提高开发效率和性能。