189 8069 5689

xmlandroid的简单介绍

什么是xml,什么android的xml,android的xml文件有什么用?

xml 全名可扩展标记语言。和html文件差不多。

泽库网站建设公司创新互联,泽库网站设计制作,有大型网站制作公司丰富经验。已为泽库超过千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的泽库做网站的公司定做!

在android中经常来编写应用的UI界面

列如:

在UI中就是这个样子:

android中的xml详解

1、xml是什么?

XML指可扩展标记语言

XML被设计用来传输和存储数据。

2、android中的xml用来做什么?

android中的xml有很多种,这里暂且只讨论layout目录下的xml文件

作用:存储数据

存储的数据,

从总体上:是view或者viewgroup的属性值

从小范围:是android原生布局或控件的属性值(当然也可以是存储用户自定义布局和属性的值)

3、xml的Schema

如不了解请移步W3CSchool

Schema详解

与DTD不同,XML Schema支持数据类型(data type)和命名空间(namespace)。

4、layout目录的xml文件

5、总结

android中所有以.xml文件后缀结尾的都是xml文件

只要是xml文件,肯定会符合xml树结构和xml语法

android里面怎么解析xml

Android解析xml文件总共有三种方法,分别是:

SAX解析XML文件: SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。如下代码:

public static ListPerson readXML(InputStream inStream) {

try {

//创建解析器

SAXParserFactory spf = SAXParserFactory.newInstance();

SAXParser saxParser = spf.newSAXParser();

//设置解析器的相关特性,true表示开启命名空间特性

saxParser.setProperty("",true);

XMLContentHandler handler = new XMLContentHandler();

saxParser.parse(inStream, handler);

inStream.close();

return handler.getPersons();

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

//SAX类:DefaultHandler,它实现了ContentHandler接口。在实现的时候,只需要继承该类,重载相应的方法即可。

public class XMLContentHandler extends DefaultHandler {

private ListPerson persons = null;

private Person currentPerson;

private String tagName = null;//当前解析的元素标签

public ListPerson getPersons() {

return persons;

}

//接收文档开始的通知。当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。

@Override

public void startDocument() throws SAXException {

persons = new ArrayListPerson();

}

//接收元素开始的通知。当读到一个开始标签的时候,会触发这个方法。其中namespaceURI表示元素的命名空间;

//localName表示元素的本地名称(不带前缀);qName表示元素的限定名(带前缀);atts 表示元素的属性集合

@Override

public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {

if(localName.equals("person")){

currentPerson = new Person();

currentPerson.setId(Integer.parseInt(atts.getValue("id")));

}

this.tagName = localName;

}

//接收字符数据的通知。该方法用来处理在XML文件中读到的内容,第一个参数用于存放文件的内容,

//后面两个参数是读到的字符串在这个数组中的起始位置和长度,使用new String(ch,start,length)就可以获取内容。

@Override

public void characters(char[] ch, int start, int length) throws SAXException {

if(tagName!=null){

String data = new String(ch, start, length);

if(tagName.equals("name")){

this.currentPerson.setName(data);

}else if(tagName.equals("age")){

this.currentPerson.setAge(Short.parseShort(data));

}

}

}

//接收文档的结尾的通知。在遇到结束标签的时候,调用这个方法。其中,uri表示元素的命名空间;

//localName表示元素的本地名称(不带前缀);name表示元素的限定名(带前缀)

@Override

public void endElement(String uri, String localName, String name) throws SAXException {

if(localName.equals("person")){

persons.add(currentPerson);

currentPerson = null;

}

this.tagName = null;

}

}

DOM解析XML文件:  DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。

Pull解析器解析XML文件:    Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值


分享文章:xmlandroid的简单介绍
本文路径:http://jkwzsj.com/article/phdggc.html

其他资讯