RSSフィードからデータを取得しようとしています。私のプログラムは、1つの例外を除いて、うまく機能しています。フィードには、次のように構成されたアイテムが含まれています。
<title></title>
<link></link>
<description></description>
データを取得できますが、タイトルに「&」文字が含まれている場合、返される文字列は前の文字で停止します。したがって、たとえば、このタイトル:
<title>A&T To Play Four Against Bears</title>
「A&TTo Play Four Against Bears」を取り戻す予定の場合、「A」を取り戻すだけです。
&amp:の存在を説明するために既存のRSSReaderクラスを変更できるかどうか誰かに教えてもらえますか?
import android.util.Log;
java.net.URLをインポートします。import java.util.ArrayList; インポートjavax.xml.parsers.DocumentBuilder; インポートjavax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.CharacterData; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList;
パブリッククラスRSSReader{
private static RSSReader instance = null;
private RSSReader() {
}
public static RSSReader getInstance() {
if (instance == null) {
instance = new RSSReader();
}
return instance;
}
public ArrayList<Story> getStories(String address) {
ArrayList<Story> stories = new ArrayList<Story>();
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
URL u = new URL(address);
Document doc = builder.parse(u.openStream());
NodeList nodes = doc.getElementsByTagName("item");
for (int i = 0; i < nodes.getLength(); i++) {
Element element = (Element) nodes.item(i);
Story currentStory = new Story(getElementValue(element, "title"),
getElementValue(element, "description"),
getElementValue(element, "link"),
getElementValue(element, "pubDate"));
stories.add(currentStory);
}//for
}//try
catch (Exception ex) {
if (ex instanceof java.net.ConnectException) {
}
}
return stories;
}
private String getCharacterDataFromElement(Element e) {
try {
Node child = e.getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
} catch (Exception ex) {
Log.i("myTag2", ex.toString());
}
return "";
} //private String getCharacterDataFromElement
protected float getFloat(String value) {
if (value != null && !value.equals("")) {
return Float.parseFloat(value);
} else {
return 0;
}
}
protected String getElementValue(Element parent, String label) {
return getCharacterDataFromElement((Element) parent.getElementsByTagName(label).item(0));
}
}
これを解決する方法について何かアイデアはありますか?