ContentHandler.java:负责对XML进行处理
/**
*
*/
package com.duoguo.content;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* @author shyboy(897948924@qq.com)
*
*/
public class ContentHandler extends DefaultHandler {
private String tagName;
private String name;
private String sex;
private int age;
// 解析XML文档开始部分
@Override
public void startDocument() throws SAXException {
System.out.println("start document");
}
// 解析XML文件结束部分
@Override
public void endDocument() throws SAXException {
System.out.println("end document");
}
// 解析XML文件元素开始部分
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// System.out.println("start element");
tagName = localName;
if ("user".equals(localName)) {
for (int i = 0; i < attributes.getLength(); i++)// 遍历元素的属性
{
System.out.println(attributes.getLocalName(i) + "="
+ attributes.getValue(i));
}
}
}
// 解析XML文件元素结束部分
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// System.out.println("end element");
if ("user".equals(localName)) {
printout();
}
}
// 解析XML文件的元素内容
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// System.out.println("characters");
if ("name".equals(tagName))// 当解析name元素的内容时
{
name = new String(ch, start, length);// 获取name元素的内容
} else if ("sex".equals(tagName))// 当解析sex元素的内容时
{
sex = new String(ch, start, length);// 获取sex元素的内容
} else if ("age".equals(tagName))// 当解析age元素的内容时
{
age = new Integer(new String(ch, start, length));// 获取age元素的内容
}
}
// 打印解析的XML文件的内容
public void printout() {
System.out.println("name:" + name);
System.out.println("sex:" + sex);
System.out.println("age:" + age);
}
}
XmlActivity.java
package com.duoguo.android;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import com.duoguo.content.ContentHandler;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 解析XML文件
*
* @author shyboy(897948924@qq.com)
*
*/
public class XmlActivity extends Activity {
// 声明Button控件
private Button parseXMLButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
parseXMLButton = (Button) findViewById(R.id.parseXMLId);// 根据空间的ID获取Button空间
parseXMLButton.setOnClickListener(new ParseXMLButtonClick());// 为Button控件添加单击事件监听器
}
// 解析XML文件事件监听器
class ParseXMLButtonClick implements OnClickListener {
@Override
public void onClick(View v) {
System.out.println("click");
String xml = "<users><user id='001'><name>shyboy</name><sex>male</sex><age>24</age></user><user id='002'><name>playboy</name><sex>female</sex><age>20</age></user></users>";
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();// 实例化SAXParserFactory对象
try {
XMLReader xmlReader = saxParserFactory.newSAXParser()
.getXMLReader();// 获取XMLReader对象
xmlReader.setContentHandler(new ContentHandler());// 注册内容事件处理器
xmlReader.parse(new InputSource(new StringReader(xml)));// 开始解析XML
} catch (SAXException e) {
e.printStackTrace();
Log.d("debug", e.getMessage());
} catch (ParserConfigurationException e) {
e.printStackTrace();
Log.d("debug", e.getMessage());
} catch (IOException e) {
e.printStackTrace();
Log.d("debug", e.getMessage());
}
}
}
}
分享到:
相关推荐
android下解析xml文件的demo
详细介绍了android中xml文件的解析,附有具体的代码和实例以及注意方面
主要给大家介绍了关于Android中对xml文件解析的3种方式,分别是 Dom 、 SAX 和 dom4j,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
在android中使用pull解析xml文件
本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...
[Android实例] Android之解析XML文件
支持SAX解析XML文件,DOM解析XML文件,Pull解析器解析XML文件,Pull生成XML文件,JAVA和Kotlin两种语言编写
包括android代码实例以及个人对Dom解析xml文件的总结文档。
android Pull XML文件解析 存取 代码程序
android中利用sax框架模型实现xml文件解析Demo
Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
android的xml文件的解析,包括xml文件的几种的解析方式。DOM与SAX解析。
Android 解析xml文件 博客:http://blog.csdn.net/dadaxiaoxiaode/article/details/9618945
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
老罗Android视频开发教程 android解析xml文件代码 很不错的Android开发教程。
Android网络编程之Pull解析XML文件~
android中使用多种解析及生成指定格式的xml文件。
事件处理器是org.xml.sax包中ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口.ContentHander用于处理跟XML文档相关的事件,DTDHander用于处理对文档的DTD进行解析时产生的事件,ErrorHandler...
android中三种xml解析方式整合(dom,pull,sax解析)