第一行为XML声明,是表示这是xml,对应的START_DOCUMENT;
前后俩问号不要忘,版本为1,字码类型为utf-8;
在最后有个隐藏的语句,对应的END_DOCUMENT;
根元素与嵌套元素,在安卓中对应的布局格式与view,允许多重嵌套;
前后俩问号不要忘,版本为1,字码类型为utf-8;
在最后有个隐藏的语句,对应的END_DOCUMENT;
根元素与嵌套元素,在安卓中对应的布局格式与view,允许多重嵌套;
可以为元素添加属性,包含在双引号中;
开始对应START_TAG;
命名空间是用来区分两个xml文件如果出现了同样的元素(如table在xml1中代表桌子,在xml2中代表表格),编译器无法区分,遂用xmlns区分。
简单的xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id=1>
<name>zhangsan</name>
<age>20</age>
</student>
<student id=2>
<name>lisi</name>
<age>19</age>
</student>
</students>
pull解析器使用
读取操作:
他的核心类为XmlPullParser,api文档——》xmlpullparser
第一步是创建破解器并配置xml
//生成解析器
XmlPullParser xpp=Xml.newPullparser();
//解析器设置xml文件,xml为xml的id,常为R.xml.xxx
xpp.setInput(xml,"UTF-8";)
解析器一个一个字符的读取,知道读取到>,将会判断他是不是一个xml语句,是的话返回一个值,通常用START_DOCUMENT、START_TAG等代替
所以解析器实际上是一个节点一个节点读取的;
产生的事件用.getEventType()获得;
然后让解析器去读取下一个节点.next()
接下来就是操作简例
<pre name="code" class="java">int event=xxp.getEventType();
while(event!=xxp.END_DOCUMENT){
switch(event){
case xxp.START_DOCUMENT:
//初始化你的对象
break;
case xxp.START_TAG:
if("student".equals(xxp.getName())){
int id=new integer(xxp.getAttributeValew(0));
}
if("name".equals(xxp.getName())){
String name=xxp.nextText();
}
break;
}
event=xxp.next();
}
写入操作:
他的核心类为Xmlserializer,api文档——》XmlSerializer
XmlSerializer xs= Xml.newSerializer();
//true是standalone的选择
xmlSerializer.startDocument("utf-8", true);
//null为namespace的值,一下均是
xs.startTag(null, "students");
xs.startTag(null, "student");
//设置属性
xs.attribute(null,"id","1");
xs.startTag(null, "name");
//设置text
xs.text("zhangsan");
xs.endTag(null,"name");
......//tag全都end
xs.endDocument();
代码风格规范,最好将每一个元素与元素之间空一行。