目录
概述:" >概述:
XML常见作用:" >XML常见作用:
XML的基本语法:" >XML的基本语法:
Pull编写XML文件." >Pull编写XML文件.
Pull解析XMl:" >Pull解析XMl:
注意事项:" >注意事项:
1,使用kxml2-2.3.0.jar和xmlpull_1_1_3_4c.jar两个jar进行解析." >1,使用kxml2-2.3.0.jar和xmlpull_1_1_3_4c.jar两个jar进行解析.
2.parser.getName()方法的返回值–标签名" >2.parser.getName()方法的返回值–标签名
首页 后端开发 XML/RSS教程 XML概述以及Pull解析的示例代码

XML概述以及Pull解析的示例代码

Mar 18, 2017 pm 05:41 PM


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=&#39;1.0&#39; encoding=&#39;utf-8&#39; standalone=&#39;yes&#39; ?>
        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=&#39;1.0&#39; encoding=&#39;utf-8&#39; standalone=&#39;yes&#39; ?>
    <书库>
        <书>
            <书名 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=&#39;1.0&#39; encoding=&#39;utf-8&#39; standalone=&#39;yes&#39; ?>

    //返回    
    书名,null,书名    <书名 id="1001">百年孤独</书名>

    //返回 
   书名,null,书名    <书名 id="1002"></书名>
登录后复制

当parser解析时.parser也会移动到标签题文本(text)中.而text没有标签名所以为null.

以上是XML概述以及Pull解析的示例代码的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
能否用PowerPoint打开XML文件 能否用PowerPoint打开XML文件 Feb 19, 2024 pm 09:06 PM

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

Python中的XML数据转换为CSV格式 Python中的XML数据转换为CSV格式 Aug 11, 2023 pm 07:41 PM

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

使用Python实现XML数据的筛选和排序 使用Python实现XML数据的筛选和排序 Aug 07, 2023 pm 04:17 PM

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

使用Python处理XML中的错误和异常 使用Python处理XML中的错误和异常 Aug 08, 2023 pm 12:25 PM

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

Python实现XML和JSON之间的转换 Python实现XML和JSON之间的转换 Aug 07, 2023 pm 07:10 PM

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

C#开发中如何处理XML和JSON数据格式 C#开发中如何处理XML和JSON数据格式 Oct 09, 2023 pm 06:15 PM

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

Python解析XML中的特殊字符和转义序列 Python解析XML中的特殊字符和转义序列 Aug 08, 2023 pm 12:46 PM

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

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

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

See all articles