我如何只返回/解析具有特定值的节点元素。
以下是我的简单XML,但我只需要time
的日期为meeting_name
的{{1}},host_name
和meeting_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是否有限制?
答案 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();
}