pull解析XML
- 读取XML文档
//创建xmlPullParse对象
//import org.xmlpull.v1.XmlPullParse;
XmlPullParse pullParse=XmlPullParseFactory.newInstance().newXmlPullParse();
//更便捷的创建方式
//import android.until.xml;
XmlPullParse pullParse=Xml.newXmlPullParse();
//设置解析XML的数据与格式
//xml,读取的xml字节流
//encoding,定义xml文件解析方式的字符集
pullParse.setInput(inputStream,encoding);
//部分API
- int getEventType()//获取xml解析器当前节点的事件(文档开始事件XmlPullParse.START_DOMCUMENT)
- int next()//获取下一个节点事件(XmlPullParse解析器除文档开始节点外不会自动解析,需要调用next()方法人工解析)
- String getName()//获取当前指针指向节点的名称
- int getAttributeCount()//获取当前节点下的属性数量
- String getAttributeName()//获取当前节点下的属性名
- String getAttributeValue(int)//获取当前指向节点的指定索引的属性值
- String nextText()//获取当前节点后面节点的文本并移动到END_TAG(该节点后面应当为文本,否则返回Empty,如<name>myName</name>)
//文档事件
- XmlPullParse.START_DOMCUMET,文档开始(如<?xml version="1.0" encoding="UTF-8">)
- XmlPullParse.START_TAG,节点开始(如<name>)
- XmlPullParse.END_TAG,节点结束(如</name>)
- XmlPullParse.END_DOMCUMENT,文档结束
- XmlPullParse.TEXT,当前元素为Text
- 写入XML文档
//创建XML写入对象,XmlSeralizer
XmlSeralizer xmlWriter=Xml.newXmlSeralizer();
//定义xml写入的字符串集类型
xmlWriter.setOutput(outputStream,encoding);
//部分API
- void setOutput(OutputStream,encoding)//绑定输出流与解析字符集类型
- void startDocument(encoding,standlone)//xml文档定稿字符集类型,文档是否对其它文件有依赖性(能否单独存在)
- void endDocument()//结束写入文档
- void startTag(nameSpace,String)//开始节点命名空间,节点名称
- void endTag(nameSpace,String)//结束节点
- void attribute(nameSpace,String,String)//设置属性的命名空间,名称与值
//读写Xml文件的封装最好使用类似以下签名
//直接对文件流进行封装处理,由其它程序将文件加载成流
//避免了多余的File文件转换或将filePath转换成流
//encoding为文件解析或写入时的字符解析格式(可根据具体要求确定是否需要)
public void writeXml(InputStream in, String encoding);
public void readXml(OutputStream out, String encoding);