栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 其他 > xml语言

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

xml语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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.声明 必须写在第一行

    version : xml的版本号.目前只有1,0版本    encoding: 编码格式

2,只能有一个根标签

3,每个标签都必须闭合

4,不能交叉嵌套

形如:

                #3F51B5     

5,CDATA区

    

如在文档中使用”<”,”>”等特殊符号时要使用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的声明----------         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文件为:

    <书库>        <书>            <书名 id="1001">百年孤独                <书>            <书名 id="1002">百年孤独            

Pull解析XMl:

 public class XmlParserDemo {        public static void main(String[] args) throws Exception {            // 创建pull解析器工厂对象        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();                // 创建解析器对象        ArrayList 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();                } 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        //返回        书名,null,书名    <书名 id="1001">百年孤独    //返回    书名,null,书名    <书名 id="1002">

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

以上就是XML概述以及Pull解析的示例代码的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/794610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号