2 hcg 21 hcg_21 于 2013.05.21 14:53 提问

sax 解析:从 div 标签中获取值

在 android 应用程序中,我要解析一个 xml 页面。xml 页面中的数据是下面这种格式:

<root>
<tag1>data</tag1>

<tag2> 
<div>data1</div><div>data2</div>
</tag2>
</root>

通过 sax 解析来获取数据:

if (localName.equalsIgnoreCase("tag1"))
if (localName.equalsIgnoreCase("tag2"))

但是我不能从tag2中得到任何数据,能从tag1中获得值。我想获取所有数据包括div标签
然后把数据显示在html页面上。

2个回答

CSDN_Ask
CSDN_Ask   2013.05.21 17:35
已采纳

使用下面的代码,应该能达到你要的功能。

currentTag = localName;
        if ("tag1".equalsIgnoreCase(localName)) {
            responseTag = new StringBuffer();
        }else if ("tag2".equalsIgnoreCase(localName)) {
            responseTag = new StringBuffer();
        }else if ("div".equalsIgnoreCase(localName)) {
            responseTag = new StringBuffer();
        }
    }

    @Override
    public void endElement(String uri, String localName, String name)
            throws SAXException {
        super.endElement(uri, localName, name);
        String responseValue = responseTag.toString().trim();

        if ("tag1".equalsIgnoreCase(localName)) {
            Log.v("TAG", "Tag 1 value "+responseValue);
        }else if ("tag2".equalsIgnoreCase(localName)) {
            Log.v("TAG", "Tag 2 value "+responseValue);
        }else if ("div".equalsIgnoreCase(localName)) {
            Log.v("TAG", "div value "+responseValue);
        }
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        super.characters(ch, start, length);
        str = new String(ch, start, length);

        if ("tag1".equalsIgnoreCase(currentTag)) {
            responseTag.append(str);
        }else if ("tag2".equalsIgnoreCase(currentTag)) {
            responseTag.append(str);
        }else if ("div".equalsIgnoreCase(currentTag)) {
            responseTag.append(str);
        }
    }
}
cj6585256
cj6585256   2013.05.21 15:20
XmlPullParser parser = Xml.newPullParser();
parser.setInput(xml, "UTF-8");
int event = parser.getEventType();
while(event != XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
//这是xml中的文档头<?xml version="1.0" encoding="UTF-8" standalone="no"?>这部分 适合做初始化工作

break;

case XmlPullParser.START_TAG:
//这里是xml的元素节点
if("KEY_CONFIG".equals(parser.getName())){
//这里做你需要做的事情
}else if("其他".equals(parser.getName())){
//获得元素节点下的文本节点 使用parser.nextText();
}else if("其他".equals(parser.getName())){
//以此类推   }
break;
case XmlPullParser.END_TAG:

break;
}
event = parser.next();
                     }     
curie_87
curie_87 帮你编辑了下代码,请参考 http://ask.csdn.net/pages/markdown
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!