我正面临着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的开放电影数据库的返回类型?
答案 0 :(得分:2)
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>
答案 1 :(得分:0)
发现问题。价值观始终存在。我不知道为什么但返回类型是包含xml标签的html文件。在Logcat上打印值,它返回html标签html,head,body,然后才返回XML。