RSS フィードを解析する Android アプリを作成していますが、過去数週間はうまく機能しています。しかし最近、投稿の 1 つに<enclosure>
タグがあり、アプリが動作しなくなり、logcat は DOMParser が NullPointerException をスローしたと述べました。
Java に関する私の知識で可能な限りのことを試してみました。しかし、役に立たない。
ちなみに、問題のあるタグを手動で削除すると、問題は解決し、アプリは再び正常に動作します。
これは私が解析しているxmlです
<item>
<title>Title</title>
<link>Link</link>
<pubDate>Sun, 27 Jan 2013 05:08:30 +0000</pubDate>
<dc:creator></dc:creator>
<guid isPermaLink="false">guid</guid>
<content:encoded>
Content
</content:encoded>
<enclosure url="" length="22836034" type="audio/mpeg"/>
</item>
関係のないタグを削除し、プライバシーと簡潔にするために情報を置き換えました
そして、パーサーのセクション:
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nl = doc.getElementsByTagName("item");
int length = nl.getLength();
for (int i = 0; i < length; i++) {
Node currentNode = nl.item(i);
RSSItem _item = new RSSItem();
NodeList nchild = currentNode.getChildNodes();
int clength = nchild.getLength();
for (int j = 1; j < clength; j = j + 2) {
Node thisNode = nchild.item(j);
String nodeContent = null;
String nodeName = thisNode.getNodeName();
nodeContent = nchild.item(j).getFirstChild().getNodeValue();
logcat では、次の行が表示されます。
nodeContent = nchild.item(j).getFirstChild().getNodeValue();
<enclosure>
が NullPointerException の理由ですが、前述したように、フィードにタグがない場合は正常に機能します。
つまり、XML ファイルに<enclosure>
タグが含まれていると、アプリが動作しなくなります。しかし、タグがなくても問題なく動作します。私がやろうとしているのは、タグを無視するか、(適切に) 削除して、残りのドキュメントの解析を続行することです。
現時点では何も機能していないため、ここで質問しています。
どんな助けでも大歓迎です。