0

私はHeadFirstAndroid開発の本を読んでいます。ここからNASARSSフィードからアプリを作成しようとする第3章。
この本では、著者はSAX parserJavaに使用しています。私はオンラインで調べましたが、ここでのSOに関する回答のいくつかは、 SAXが古く、新しいソリューションがあることを示唆しています。

ただし、Javaで使いやすいものが何であるかはわかりません。私は以前に使用NokogiriしましたがRuby、似たようなものが素晴らしいでしょう。私は見てjsoup、それは大丈夫に見えました、しかし私はあなたたちがどんな提案をするかもしれないかと思っています。

4

5 に答える 5

1

私はHeadFirstAndroid Developmentの作者なので、少し考えてみたかっただけです。SAXは確かに少し面倒ですが、簡単で、しばらくの間Androidに組み込まれていました(したがって、本でそれを使用することにしました)。私はレール開発者でもあり、nokogiriの大ファンであり、頻繁に使用しています。jsoupを見ると、それが便利であることがはっきりとわかりました。とはいえ、まだ試したことがないので、直接体験することはできません。

確認するもう1つのオプションは、Androidに組み込まれているXMLPullParserです。それはまだかなりSAXに似ていますが、もう少しフル機能を備えています。

お役に立てれば。

于 2012-06-18T07:06:52.257 に答える
1

Androidはメインスレッドでのネットワークをサポートしていないため、第3章のコードは停止します。

したがって、XmlPullParserのような任意のパーサーを使用できますが、メインスレッドからネットワーク(フィードのダウンロードなど)を実行するようにしてください。AsyncTaskを使用して、ネットワークをメインスレッドの外に移動するか、新しいThread()を作成して、そのスレッドでネットワークを実行することができます(推奨)

実際、第4章では、ネットワーキングを行うための新しいスレッドを実際にDIDで作成しました。したがって、代わりにchapter4コードを使用すると、機能します。

あなたが直面するかもしれないもう一つの問題は、最近のNASAの毎日の画像が本当に大きいので、OutOfMemoryErrorです。したがって、inSampleSizeを使用して画像をデコードする必要があります。画像のデコードに関する他の質問をチェックして、必要なものを取得できます。幸運を。))

于 2014-07-23T04:11:53.463 に答える
0

私はJsoupの大ファンです。私は最近それを使い始めたばかりで、その驚くべきものです。疫病のようなSAXを避けたかったので、パターンマッチングを行うためにいくつかの超毛深い正規表現パターンを書いていました...そしてそれはあなたが想像できるようにかなり退屈でした。Jsoupを使用すると、わずか数行のコードで<table>から特定の項目を解析できます。

<tr class=...>がGridItemまたはGridAltItemであるテーブルの最初の7行を取得するとします。次に、1列目、2列目、3列目をテキストとして印刷し、次にその行に表示される最初の<ahref>リンクを印刷するとします。間抜けに聞こえますが、私はこれをしなければならず、これを簡単に行うことができます:

String page = "... some html markup fetched from somewhere ...";
Document doc = Jsoup.parse(page);
for(int x=0; x< 7; x++) {
  Element gridItem = doc.select("tr[class$=Item]").select("tr").get(x);
  System.out.println("row: " + gridItem.select("td").get(0).text() + " " + gridItem.select("td").get(1).text() + " " + gridItem.select("td").get(4).text() + " " + gridItem.select("a").get(0).attr("href"));
}

Jsoupを使えばとても簡単です。Jsoup jarファイルをライブラリとしてプロジェクトに追加し、必要なクラスをインポートしてください。間違ったDocumentまたはElementクラスをインポートしたくない...

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

Enjoy!

于 2012-06-26T02:38:23.300 に答える
0

SAXはそれを達成するためのデフォルトの方法だと思いますが、何か新しいことを試みることに制限はありません:)

于 2012-06-18T06:34:46.247 に答える
0

バージョン1.6.2以降、Jsoupは正式にXML解析もサポートしています。したがって、これにより、XMLを解析し、jQueryのようなCSSセレクターを使用して要素を選択できます。Jsoupを使用してXMLドキュメントを作成するには、Jsoup#parse()メソッドの代わりに次のものが必要です。

Document document = Parser.xmlParser().parseInput(xmlString, "");
// ...

このように、入力は暗黙的にHTML5として扱われません(したがって、自動インクルード<html><head>されたタグなどはありません)。

于 2012-07-01T04:09:49.830 に答える