1.返回一个参数时
private String getResultByIsbn(String isbn) throws ClientProtocolException,
IOException, IllegalStateException, XmlPullParserException {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url + isbn);
HttpResponse response = client.execute(get);
return getBookInfo(response.getEntity().getContent());
}
private String getBookInfo(InputStream inputStream)
throws XmlPullParserException, IOException {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput(inputStream, "UTF-8");
StringBuilder builder = new StringBuilder();
for (int i = parser.getEventType(); i != XmlPullParser.END_DOCUMENT; i = parser
.next()) {
if (i == XmlPullParser.START_TAG
&& parser.getName().equals("title")) {
builder.append("名称: ").append(parser.nextText());
break;
}
}
return builder.toString();
}
2.显示详细内容时
try {
bookInfo = getResultByIsbn(this.getIntent().getExtras().getString(
"ISBN"));
} catch (Exception e) {
throw new RuntimeException(e);
}
resultWeb = (WebView) this.findViewById(R.id.resultWeb);
this.resultWeb.getSettings().setSupportZoom(false);
this.resultWeb.getSettings().setJavaScriptCanOpenWindowsAutomatically(
true);
this.resultWeb.getSettings().setJavaScriptEnabled(true);
this.resultWeb.loadUrl("file:///android_asset/results.html");
this.resultWeb.addJavascriptInterface(new Object() {
public String getBookName() {
return bookInfo.getName();
}
public String getBookSummary() {
return bookInfo.getSummary();
}
public String getBookImageUrl() {
return bookInfo.getImageUrl();
}
public String getBookAuthor() {
return bookInfo.getAuthor();
}
}, "searchResult");
}
private BookInfo getResultByIsbn(String isbn)
throws ClientProtocolException, IOException, IllegalStateException,
XmlPullParserException {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url + isbn);
HttpResponse response = client.execute(get);
return getBookInfo(response.getEntity().getContent());
}
private BookInfo getBookInfo(InputStream inputStream)
throws XmlPullParserException, IOException {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput(inputStream, "UTF-8");
BookInfo bookInfo = new BookInfo();
for (int i = parser.getEventType(); i != XmlPullParser.END_DOCUMENT; i = parser
.next()) {
if (i == XmlPullParser.START_TAG
&& parser.getName().equals("attribute")
&& parser.getAttributeValue(0).equals("title")) {
bookInfo.setName(parser.nextText());
Log.v("soubook", "title>>" + bookInfo.getName());
continue;
}
if (i == XmlPullParser.START_TAG
&& parser.getName().equals("attribute")
&& parser.getAttributeValue(0).equals("author")) {
bookInfo.setAuthor(parser.nextText());
Log.v("soubook", "author>>" + bookInfo.getAuthor());
continue;
}
if (i == XmlPullParser.START_TAG
&& parser.getName().equals("summary")) {
bookInfo.setSummary(parser.nextText());
Log.v("soubook", "summary>>" + bookInfo.getSummary());
continue;
}
if (i == XmlPullParser.START_TAG && parser.getName().equals("link")) {
if (parser.getAttributeValue(1).equals("image")) {
bookInfo.setImageUrl(parser.getAttributeValue(0));
Log.v("soubook", "iamge>>" + bookInfo.getImageUrl());
}
continue;
}
}
Log.v("soubook", ">>>>> parse end.");
return bookInfo;
}
分享到:
相关推荐
XMLPull解析的优点在于其低内存占用和高效性能,因为它是基于拉取模型,解析器只在需要时读取XML数据。这对于处理大型XML文件或者在资源有限的环境中尤其有用。同时,由于XMLPull解析器不依赖DOM(Document Object ...
在实际应用中,XmlPull解析常用于读取配置文件、解析网络返回的XML数据等场景。它的灵活性和低资源消耗使其成为处理XML文档的首选方案之一。 总结来说,“复杂XmlPull解析Demo”是一个学习和实践如何使用XmlPull...
但在处理大量XML数据或者需要节省资源的情况下,XmlPull解析是值得推荐的选择。 总的来说,XmlPull解析是XML处理的一种实用技术,尤其适用于移动开发和嵌入式系统。通过理解并掌握这种解析方式,开发者可以更高效地...
总之,XMLPull解析是Android开发中处理XML数据的有效方式,它简化了XML解析过程,降低了内存消耗,提高了应用程序性能。通过理解XML事件和使用`XmlPullParser`接口,开发者可以高效地解析XML输入流,提取所需信息。
在描述中提到的jar包,很可能是XMLPull解析库的实现,例如XMLPull_1_1_3_4c.jar,这个版本的XMLPull库提供了Java API,使得开发者可以直接在Java项目中集成并使用XMLPull解析XML。 标签“xmlpull”、“xml解析”和...
XMLPullProject是一个基于XMLPull解析技术的项目,旨在帮助初学者理解并掌握XML数据的读取方式。XMLPull是一种轻量级的解析XML文档的方法,它允许开发者在没有额外依赖库的情况下高效地处理XML数据。这个项目通过源...
总之,"xmlpull-1.1.3.1.jar" 提供了XMLPull解析器的实现,是Android开发中处理XML数据的理想选择,尤其是当内存管理是一个重要考虑因素时。通过流操作文件的方式,它能有效地处理XML文档,提高应用程序的效率和响应...
总之,XMLPull解析是Android开发中处理XML数据的一种高效方法。通过掌握其核心概念和API,开发者可以灵活地解析和构建XML文档,同时减少对内存资源的消耗。在实践中,不断调试和优化代码,能够进一步提升解析效率,...
XStream是一个用于XML和Java对象之间进行序列化和反序列化的库,它依赖于XMLPull解析器来处理XML数据。 在“xmlpull_1_0_5”这个压缩包中,很可能包含了XMLPull解析库的1.0.5版本。这个版本可能修复了一些已知的...
在Android开发中,XML是一种常见的数据交换格式,用于存储和传输结构化数据。PullXML解析器是Android系统提供的...理解XMLPull解析器的工作原理和API,能够帮助开发者更有效地处理XML数据,提高应用的性能和用户体验。
在Android开发中,KXML2库实现了XMLPULL解析接口,使得开发者可以用KXML2的API进行Pull解析。这种结合使用的方式既保留了KXML2的易用性,又具备了Pull解析的高效性。 5. **使用步骤**: - 引入KXML2库:在Android...
XMLPull是Java平台上的轻量级XML解析技术,它提供了高效、低...kxml2-2.3.0.jar和xmlpull-1.1.3.1.jar这两个jar包构成了XMLPull解析的基础,可以帮助开发者轻松地处理XML数据,降低系统资源消耗,提高程序的运行效率。
XMLPULL解析是一种轻量级、高效的处理XML文档的方法,尤其适用于资源有限的移动设备或嵌入式系统。它提供了一种编程接口,允许开发者在Java环境中读取和解析XML文档,而无需依赖完整的DOM(Document Object Model)...
你可以看到如何实现XMLPull解析器的核心类,如`XMLPullParser`,它是处理XML文档的主要接口,提供了诸如next()、getName()、getText()等方法来获取XML文档的结构和内容。 "xmlpull_doc"目录则包含了XMLPull的文档...
XMLPull是处理XML的一种轻量级、高性能的解析方式,它提供了一种统一的接口来读取XML文档,无论底层实现是基于SAX(Simple API for XML)还是DOM(Document Object Model)。XMLPull API的设计目标是减少解析XML时的...
XMLPull是XML解析的一种轻量级、高效能的处理方式,尤其适合于资源有限的设备或内存敏感的应用。XMLPull API提供了一种基于事件的解析模型,允许开发者以拉(Pull)的方式处理XML文档,而不是像DOM那样将整个文档...
XMLPull是XML(eXtensible Markup Language)解析的一种轻量级、低内存占用的解析方式,它在处理大量XML数据时特别有用。这个“xmlpull.zip”压缩包包含了两个关键的Java库文件,用于在Java环境中进行XML解析:kxml2...
XML Pull解析器在Android中的主要接口是`org.xmlpull.v1.XmlPullParser`和`org.xmlpull.v1.XmlPullParserFactory`。首先,我们需要通过`XmlPullParserFactory`创建一个`XmlPullParser`实例。工厂类提供了设置解析器...
- 解析数据:在事件处理过程中,提取元素、属性、文本等内容,进行业务逻辑处理。 - 结束解析:调用解析器的结束解析方法,释放资源。 4. 选择解析器: XMLPull适合需要逐个处理XML元素且内存受限的情况,而XML...