XML概述以及Pull解析的示例代码
XML概述以及Pull解析详解
ONE Goal ,ONE Passion !
做Android开发最多的都是json.而且解析xml都用Xstream,慢慢地xml的手动解析都快忘记了.一般最常见的还是基于dom的demo4j , 还有基于sax的pull解析.还有一种吧忘记了
概述:
XML是什么 ?
eXtensible Markup Language(可扩展的标记语言);
XML常见作用:
1,用作配置文件
2,数据传输时数据格式
3,Android中资源文件
XML的基本语法:
1.声明 必须写在第一行
<?xml version="1.0" encoding="utf-8"?> version : xml的版本号.目前只有1,0版本 encoding: 编码格式
2,只能有一个根标签
3,每个标签都必须闭合
4,不能交叉嵌套
形如:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> </resources>
5,CDATA区
<![CDATA[ 将有特殊符号文本显示 if( 3< 5 ){ } ]]>
如在文档中使用”<”,”>”等特殊符号时要使用CDATA区,否者不能正常编译.
Pull编写XML文件.
public class WriteXml { public static void main(String[] args) throws Exception { // 创建xml解析工厂 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 通过工厂创建序列化器(xml生成器) XmlSerializer ser = factory.newSerializer(); // 为序列化器指定输出流(将xml文件写到指定的某个文件中) ser.setOutput(new FileOutputStream("src/b.xml"), "utf-8"); // 开始写xml文件 // 1.xml的声明---------- <?xml version='1.0' encoding='utf-8' standalone='yes' ?> ser.startDocument("utf-8", true); // 2. 开始标签 ---------- <书库> ser.startTag(null, "书库"); for ( int i = 0; i < 2; i++) { //3.开始标签 ------------- <书> ser.startTag(null, "书"); // 4. 开始标签------------ <书名> ser.startTag(null, "书名"); //4.1为书名标签设置 属性--------- <书名 id = "1001"> ser.attribute(null, "id", "1001"); //4.2标签设置 文本------------ <书名 id = "1001" >百年孤独 ser.text("百年孤独"); // 5,结束标签 ------------ </书名> ser.endTag(null, "书名"); // 6.结束标签------------</书> ser.endTag(null, "书"); } // 7.根标签 结束-----------</书库> ser.endTag(null, "书库"); ser.endDocument(); } }
生成的b.xml文件为:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <书库> <书> <书名 id="1001">百年孤独</书名> </书> <书> <书名 id="1002">百年孤独</书名> </书> </书库>
Pull解析XMl:
public class XmlParserDemo { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // 创建pull解析器工厂对象 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 创建解析器对象 ArrayList<Book> list = null; Book book = null; // 获得解析器 XmlPullParser parser = factory.newPullParser(); // 从指定文件中解析 出xml parser.setInput(new FileInputStream("src/b.xml"), "utf-8"); // 1 . 判断是否是根标签的结束标签 while (parser.getEventType() != XmlPullParser.END_DOCUMENT) { switch (parser.getEventType()) { case XmlPullParser.START_TAG: // 开始标签 if (parser.getName().equalsIgnoreCase("书库")) { // ------------<书库> // 如果是 跟标签时,创建集合存储 对象 list = new ArrayList<Book>(); } else if (parser.getName().equalsIgnoreCase("书")) { // ----------<书> // 当标签是对象时. 创建 对象 book = new Book(); } else if (parser.getName().equalsIgnoreCase("书名")) { // ----------<书名> // 获得当前标签中的 属性以及text.并存储到对象中 String id = parser.getAttributeValue(null, "id"); book.setId(id); String name = parser.nextText(); book.setName(name); } break; case XmlPullParser.END_TAG: // 结束标签 // 标签为对象的结束标签时,将对象存储到集合中 </书> if (parser.getName().equalsIgnoreCase("书")) { // -------</书> // 注意:当时</书名>结束标签时不用做处理 list.add(book); } break; } parser.next(); } for (int i = 0; i < list.size(); i++) { System.out.println("---" + list.get(i)); } } }
注意事项:
1,使用kxml2-2.3.0.jar和xmlpull_1_1_3_4c.jar两个jar进行解析.
如果没有build.path会报下面的错误:
org.xmlpull.v1.XmlPullParserException: caused by: org.xmlpull.v1.XmlPullParserException: resource not found: /META-INF/services/org.xmlpull.v1.XmlPullParserFactory make sure that parser implementing XmlPull API is available
2.parser.getName()方法的返回值–标签名
形如:
//返回null <?xml version='1.0' encoding='utf-8' standalone='yes' ?> //返回 书名,null,书名 <书名 id="1001">百年孤独</书名> //返回 书名,null,书名 <书名 id="1002"></书名>
当parser解析时.parser也会移动到标签题文本(text)中.而text没有标签名所以为null.
以上是XML概述以及Pull解析的示例代码的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

XML文件可以用PPT打开吗?XML,即可扩展标记语言(ExtensibleMarkupLanguage),是一种被广泛应用于数据交换和数据存储的通用标记语言。与HTML相比,XML更加灵活,能够定义自己的标签和数据结构,使得数据的存储和交换更加方便和统一。而PPT,即PowerPoint,是微软公司开发的一种用于创建演示文稿的软件。它提供了图文并茂的方

Python中的XML数据转换为CSV格式XML(ExtensibleMarkupLanguage)是一种可扩展标记语言,常用于数据的存储和传输。而CSV(CommaSeparatedValues)则是一种以逗号分隔的文本文件格式,常用于数据的导入和导出。在处理数据时,有时需要将XML数据转换为CSV格式以便于分析和处理。Python作为一种功能强大

使用Python实现XML数据的筛选和排序引言:XML是一种常用的数据交换格式,它以标签和属性的形式存储数据。在处理XML数据时,我们经常需要对数据进行筛选和排序。Python提供了许多有用的工具和库来处理XML数据,本文将介绍如何使用Python实现XML数据的筛选和排序。读取XML文件在开始之前,我们需要先读取XML文件。Python有许多XML处理库,

使用Python处理XML中的错误和异常XML是一种常用的数据格式,用于存储和表示结构化的数据。当我们使用Python处理XML时,有时可能会遇到一些错误和异常。在本篇文章中,我将介绍如何使用Python来处理XML中的错误和异常,并提供一些示例代码供参考。使用try-except语句捕获XML解析错误当我们使用Python解析XML时,有时候可能会遇到一些

Python实现XML和JSON之间的转换导语:在日常的开发过程中,我们常常需要将数据在不同的格式之间进行转换。XML和JSON是常见的数据交换格式,在Python中,我们可以使用各种库来实现XML和JSON之间的相互转换。本文将介绍几种常用的方法,并附带代码示例。一、XML转JSON在Python中,我们可以使用xml.etree.ElementTree模

C#开发中如何处理XML和JSON数据格式,需要具体代码示例在现代软件开发中,XML和JSON是广泛应用的两种数据格式。XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,而JSON(JavaScript对象表示)是一种轻量级的数据交换格式。在C#开发中,我们经常需要处理和操作XML和JSON数据,本文将重点介绍如何使用C#处理这两种数据格式,并附上

Python解析XML中的特殊字符和转义序列XML(eXtensibleMarkupLanguage)是一种常用的数据交换格式,用于在不同系统之间传输和存储数据。在处理XML文件时,经常会遇到包含特殊字符和转义序列的情况,这可能会导致解析错误或者误解数据。因此,在使用Python解析XML文件时,我们需要了解如何处理这些特殊字符和转义序列。一、特殊字符和

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储
