【问题标题】:parse XML block by block in android在android中逐块解析XML
【发布时间】:2012-05-24 06:05:24
【问题描述】:
我正在使用 DOM 解析 XML,我有一些数据标签,例如:
<data>
<option>abc</option>
<option>ijk</option>
<option>fgh</option>
<option>njk</option>
<option>klj</option>
<option>opi</option>
</data>
<data>
<option>abc</option>
<option>ijk</option>
<option>fgh</option>
<option>njk</option>
<option>klj</option>
<option>opi</option>
</data>
我想在我的布局中的列表中插入选项,请问我该如何做同样的事情。我希望它只解析第一个块的数据,然后它会通过单击按钮来请求触发事件。
提前感谢。
【问题讨论】:
标签:
android
xml
dom
android-xml
【解决方案1】:
既然要解析部分 XML 数据,最好使用XmlPullParser。
您需要一种方法,一次读取一个块,并将解析器的引用作为成员变量。
public class PartialXmlParser{
private XmlPullParser xpp;
public PartialXmlParser(String xml){
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
xpp = factory.newPullParser();
xpp.setInput( new StringReader (xml ) );
}
public List<String> getData(){
List<String> retValue = new List<String>();
//Logic to read one block of data and add to retValue
//
return retValue;
}
}
并在回调事件中调用getData 方法(如按钮的OnClick)。请记住使用对象的相同实例来获取数据。
【解决方案2】:
Java 平台在相当长的一段时间内一直支持多种不同的 XML 工作方式,并且大多数 Java 的 XML 相关 API 在 Android 上得到完全支持。例如,Java 的 XML 简单 API (SAX) 和文档对象模型 (DOM) 都可以在 Android 上使用。这两种 API 多年来一直是 Java 技术的一部分。较新的 XML 流 API (StAX) 在 Android 中不可用(More)。
这是how to parsing xml in android 的最佳示例,就像您的问题一样。
这是 Android XML SAX Parser Example。在 Android 中解析 XML(DOM 方法)是 Dom 方法的另一个最佳示例http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/。
XmlResourceParser 是为 XML 资源返回的 XML 解析接口。这是一个标准的 XmlPullParser 接口,以及扩展的 Attribute Set 接口和该接口上的附加 close() 方法,用于客户端指示何时完成读取资源(More)。
别忘了看看这个。 Parsers used in Android