基于日期值的Android Parse XML

时间:2011-10-08 19:08:28

标签: java android xml

我如何只返回/解析具有特定值的节点元素。

以下是我的简单XML,但我只需要time的日期为meeting_name的{​​{1}},host_namemeeting_item

2012-03-09

到目前为止,下面是我的解析代码,但这只是文件中的所有内容:

<meeting_item>
    <time>12:30</time>
    <date>2012-03-09</date>
    <meeting_name>build a shop 4</meeting_name>
    <host_name>Bob Jones</host_name>
</meeting_item>
<meeting_item>
    <time>11:30</time>
    <date>2012-03-23</date>
    <meeting_name>build a shop advance</meeting_name>
    <host_name>Judy Washington</host_name>
</meeting_item>
<meeting_item>
    <time>11:30</time>
    <date>2012-03-23</date>
    <meeting_name>build a shop 2</meeting_name>
    <host_name>Tom Smith</host_name>
</meeting_item>
<meeting_item>
    <time>11:30</time>
    <date>2012-04-06</date>
    <meeting_name>build a shop 3</meeting_name>
    <host_name>Tom Green</host_name>
</meeting_item>

另外在我的logCat Log.d(TAG,xml)中;并没有完全通过文件。并且有时会抛出有关不读取所有文件的错误。 httpGet是否有限制?

1 个答案:

答案 0 :(得分:0)

如果你只想解析xml文件的一部分,我建议你使用像XmlPullParser或SaxParser这样的东西。由于dom解析器将尝试根据您的xml数据创建完整的对象树。要使用xml pull解析器执行此操作,您的解析代码将类似于

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(is,"UTF-8");

int eventType = xpp.getEventType();
outerloop: 
while (eventType != XmlPullParser.END_DOCUMENT) {
    switch(eventType){
        case XmlPullParser.START_DOCUMENT: 
            Log.e("Start","Start");
            break;
        case XmlPullParser.START_TAG:
            Log.e("StartTag", xpp.getName());
            break;                      
        case XmlPullParser.END_TAG:
            Log.e("EndTag", xpp.getName());
                  //When you need to stop parsing use this
                  break outerloop;
            break;
    }
    eventType = xpp.next();
}