4

Jsoup でいくつかの問題に直面しています。ベータ版の Android アプリで API を使用して Open Movie Database から xml ファイルを取得しようとしています。彼らの API ドキュメントには、戻り値の型が xml である場合は、"r=" と戻りファイルの種類を入力するだけであると記載されています。私はいくつかの要求でテストしました。それらの1つの下:

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

ブラウザでのテストは問題なく動作します。しかし、アンドロイドではありません。例外がスローされます。戻りファイルの種類を挿入しないと、JSON が返されます。この場合、私はデータを受け取ります。問題がxmlファイルにあるかどうかを確認するには。MusicBrainz API でテストしました。デフォルトでは XML を返します。私の驚いたことに、うまくいきます。

何が問題ですか?Jsoup の開いている映画データベースの戻り値の型は?

4

2 に答える 2

2

Jsoup の主な焦点は、HTML を処理することと、返されるドキュメントが整形式の HTML であることを確認することです。したがって、デフォルトでは常に入力を HTML として扱い、ドキュメントを正規化します。そのため、 のような DOM を取得しています<html><head></head>...<xml>...</html>

与えている入力が実際に XML であることがわかっている場合は、XML モードで解析するように Jsoup を構成できます。その場合、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>
于 2012-12-15T23:26:13.007 に答える
0

問題が見つかりました。値は常にそこにありました。理由はわかりませんが、戻り値のタイプはxmlタグが含まれているhtmlファイルです。Logcatに値を出力すると、htmlタグhtml、head、bodyが返され、その後にのみXMLが返されます。

于 2012-12-14T11:37:40.483 に答える