android – Jsoup无法读取xml返回文件

我正面临着Jsoup的一些问题.我正在尝试使用我的测试版Android应用中的API从Open Movie Database中检索xml文件.
他们的api文档说如果返回类型是一个xml,只需输入“r =”和返回文件类型.
我已经测试了一些请求.其中一个

Jsoup.connect(http://www.omdbapi.com/?i=tt1285016&r=xml).get();

在浏览器上测试工作正常.但在android没有.抛出任何异常.如果我不插入返回文件类型,则返回JSON.在这种情况下,我收到数据.
确保问题是否与xml文件有关.我用musicbrainz API测试了.认情况下,它返回XML.我的惊喜很好.

问题是什么? Jsoup的开放电影数据库的返回类型?

解决方法:

Jsoup的主要重点是处理HTML,并确保返回的文档是格式良好的HTML.因此,认情况下,它始终将输入视为HTML并将文档规范化.这就是为什么你得到像< html>< head>< / head> …< xml> …< / html>这样的DOM.

如果您知道您提供的输入实际上是XML,则可以将Jsoup配置为在XML模式下进行解析.在这种情况下,它不会规范化为HTML DOM,也不会强制执行任何HTML规范.

举个例子:

String url = "http://www.omdbapi.com/?i=tt1285016&r=xml";
Document doc = Jsoup.connect(url)
    .parser(Parser.xmlParser())
    .get();

System.out.println(doc);

使用和不使用Parser.xmlParser()配置比较该输出

在XML模式下:

<?xml version="1.0" encoding="UTF-8"?>
<root response="True">
 <movie title="The Social Network" year="2010" {snip} />
</root>

在HTML模式下:

<!--?xml version="1.0" encoding="UTF-8"?-->
<html>
 <head></head>
 <body>
  <root response="True">
   <movie title="The Social Network" {snip} />
  </root>
 </body>
</html>

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...