您的位置:首页 > 移动开发 > Android开发

android-文件解析-<八>

2015-02-16 09:17 295 查看
1.SAX

全称simple api for xml,即是一种接口,也是一个软件包,作为接口,SAX是事件驱动型XML解析的一个标准接口.

它是扫描一行的xml,并解析它,再扫描下一行并解析。

2.SAX的原理





[b]



[/b]



3.SAX实现读取一个字符串(内容为从网络下载后写入的字符)的代码步骤。

1.获取XMLReader:

//创建一个SAXParserFactory
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader reader = factory.newSAXParser().getXMLReader();


2.为XMLReader 设置内容处理器。(该内容处理器类需要用另一个类继承重写里面的方法)

//为XMLReader设置内容处理器
reader.setContentHandler(new MyContentHandler());


3.开始解析文件(用xmlreader的parse方法)

//开始解析文件,resultStr就是我们要解析的字符串
reader.parse(new InputSource(new StringReader(resultStr)));


4.ContentHandler类(内容处理器)

//这里继承DefaultHandler,而不是ContentHandler原因是
//采用了适配器模式,我们需要用到ContentHandler某些方法
//不需要其他多余的方法,而DefaultHandler刚好给我们常用需要的方法,没有多余方法
public class MyContentHandler extends DefaultHandler {
String hisname, address, money, sex, status;
String tagName;

public void startDocument() throws SAXException {
System.out.println("````````begin````````");
}

public void endDocument() throws SAXException {
System.out.println("````````end````````");
}

public void startElement(String namespaceURI, String localName,
String qName, Attributes attr) throws SAXException {
tagName = localName;
if (localName.equals("worker")) {
//获取标签的全部属性
for (int i = 0; i < attr.getLength(); i++) {
System.out.println(attr.getLocalName(i) + "=" + attr.getValue(i));
}
}
}

public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
//在workr标签解析完之后,会打印出所有得到的数据
tagName = "";
if (localName.equals("worker")) {
this.printout();
}
}
public void characters(char[] ch, int start, int length)
throws SAXException {
if (tagName.equals("name"))
hisname = new String(ch, start, length);
else if (tagName.equals("sex"))
sex = new String(ch, start, length);
else if (tagName.equals("status"))
status = new String(ch, start, length);
else if (tagName.equals("address"))
address = new String(ch, start, length);
else if (tagName.equals("money"))
money = new String(ch, start, length);
}

private void printout() {
System.out.print("name: ");
System.out.println(hisname);
System.out.print("sex: ");
System.out.println(sex);
System.out.print("status: ");
System.out.println(status);
System.out.print("address: ");
System.out.println(address);
System.out.print("money: ");
System.out.println(money);
System.out.println();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐