3
public List<String> readRSS(String feedUrl, String openTag, String closeTag)
throws IOException, MalformedURLException {
URL url = new URL(feedUrl);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String currentLine;
List<String> tempList = new ArrayList<String>();
while ((currentLine = reader.readLine()) != null) {
Integer tagEndIndex = 0;
Integer tagStartIndex = 0;
while (tagStartIndex >= 0) {
tagStartIndex = currentLine.indexOf(openTag, tagEndIndex);
if (tagStartIndex >= 0) {
tagEndIndex = currentLine.indexOf(closeTag, tagStartIndex);
tempList.add(currentLine.substring(tagStartIndex + openTag.length(), tagEndIndex) + "\n");
}
}
}
if (tempList.size() > 0) {
if(openTag.contains("title")){
tempList.remove(0);
tempList.remove(0);
}
else if(openTag.contains("desc")){
tempList.remove(0);
}
}
return tempList;
}
私はRSSフィードを読むためにこのコードを書いています。それはすべて正常に動作しますが、パーサがこのような文字を見つけると、
が壊れます。これは、XMLがエスケープされるため、終了タグを見つけることができないためです。Javaでエスケープ文字をテキストとして読み取る方法は?
コード内でどのように修正できるかわかりません。誰も私がこの問題を解決するのを助けることができますか?
したがって、エスケープ文字をテキストとして読み取ってから、(おそらく)それらをスキップするのは正しいでしょうか? – progyammer
@progyammerはい私はそれらをスキップしたいです。今起こっていることは次のとおりです。RSSリーダーは を参照してから、というタグに到達しないように読み込みを終了し、クラッシュします。 OPを画像で更新しましたので、より明確になりました。 –
うん。それはパーサであるため、エスケープシーケンスとして遭遇したときに何をするのかを行います。何らかの形でそのルールを上書きし、すべてをテキストとして読み込む必要があります。入力の後処理はちょっとだけ増えるでしょう。 – progyammer