pull解析

public class MainActivity extends Activity {

List<Person> persons = new ArrayList<Person>();
private String tagname;
Person p;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

// 解析xml文件的方法
public void pullxml(View v) {
    // 1 得到pull解析器
    XmlPullParser xmlParser = Xml.newPullParser();
    try {
        // 2 加载需要解析的文件
        xmlParser.setInput(getAssets().open("data.xml"), "utf-8");
        // 3 开始读取文档
        int type = xmlParser.getEventType();
        // 如果文档没有读到结束标签,循环进行读取文档内容
        while (type != XmlPullParser.END_DOCUMENT) {
            // 读取tag标签
            switch (type) {
            case XmlPullParser.START_DOCUMENT:
                System.out.println("开始读取文档+++++++++++++++++");
                break;
            case XmlPullParser.START_TAG:
                // 如果读取到开始标签,把标签名进行读取<person>
                tagname = xmlParser.getName();
                System.out.println(tagname+"++++++++++++++++标签名");
                if (tagname.equals("person")) {
                    p = new Person();
                    // 得到标签person中的属性值
                    String sid = xmlParser.getAttributeValue(0).trim();
                    p.setId(Integer.parseInt(sid));
                }
                break;
            case XmlPullParser.TEXT:
                if (tagname.equals("name")) {
                    p.setName(xmlParser.getText());
                } else if (tagname.equals("age")) {

// System.out.println(xmlParser.getText());
String sage = xmlParser.getText().trim();
p.setAge(Integer.parseInt(sage));
}
break;
case XmlPullParser.END_TAG:
//结束时,对标签名赋值
tagname=xmlParser.getName();
//如果结束标签为
if (tagname.equals(“person”)) {
persons.add(p);
}
tagname=”“;
break;
default:
break;
}
/**
* 业务逻辑处理
*/
type = xmlParser.next();
}

        System.out.println("文档读取完毕++++++++++++++++++" + persons);
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PULL解析是一种基于事件驱动的解析方式,它逐行读取XML文档并触发事件,开发人员可以根据需要处理这些事件。相比于DOM解析方式,PULL解析方式更加轻量级和高效,适用于处理大型XML文件。 以下是使用PULL解析方式解析XML文件的基本步骤: 1. 创建一个XmlPullParser实例,该实例可以从一个输入流中读取XML文档。例如,可以使用以下代码创建一个XmlPullParser实例: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(inputStream, null); ``` 2. 通过解析器读取XML文档中的每个元素,并在需要的时候处理它们。例如,可以使用以下代码循环读取XML文档中的每个元素: ```java int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG) { // 开始标签 String tagName = parser.getName(); if (tagName.equals("book")) { // 处理book元素 String bookName = parser.getAttributeValue(null, "name"); } } else if (eventType == XmlPullParser.END_TAG) { // 结束标签 } else if (eventType == XmlPullParser.TEXT) { // 元素内容 String text = parser.getText(); } eventType = parser.next(); } ``` 3. 根据需要处理每个元素。例如,可以使用上面的代码来处理book元素并获取它的name属性。 注意:在处理XML文档时,可能会遇到异常情况,例如XML语法错误或无法打开输入流。因此,开发人员需要在代码中捕获这些异常并进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值