Android rss源解析
我是android新手,在我的应用程序中,我必须解析数据,我需要在屏幕上显示。但在一个特定的标签数据中,我无法解析原因,因为标签中也有一些特殊字符。下面我显示我的代码 我的解析器函数:Android rss源解析,android,rss,Android,Rss,我是android新手,在我的应用程序中,我必须解析数据,我需要在屏幕上显示。但在一个特定的标签数据中,我无法解析原因,因为标签中也有一些特殊字符。下面我显示我的代码 我的解析器函数: protected ArrayList<String> doInBackground(Context... params) { // context = params[0]; DocumentBuilderFactory factory = DocumentBu
protected ArrayList<String> doInBackground(Context... params)
{
// context = params[0];
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
test = new ArrayList<String>();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new java.net.URL("input URL_confidential").openConnection().getInputStream());
//Document document = builder.parse(new URL("http://www.gamestar.de/rss/gamestar.rss").openConnection().getInputStream());
Element root = document.getDocumentElement();
NodeList docItems = root.getElementsByTagName("item");
Node nodeItem;
for(int i = 0;i<docItems.getLength();i++)
{
nodeItem = docItems.item(i);
if(nodeItem.getNodeType() == Node.ELEMENT_NODE)
{
NodeList element = nodeItem.getChildNodes();
Element entry = (Element) docItems.item(i);
name=(element.item(0).getFirstChild().getNodeValue());
// System.out.println("description = "+element.item(2).getFirstChild().getNodeValue().replaceAll("<div><p>"," "));
System.out.println("Description"+Jsoup.clean(org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4(element.item(2).getFirstChild().getNodeValue()), new Whitelist()));
items.add(name);
}
}
}
catch (ParserConfigurationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SAXException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return items;
}
简单地替换冒犯的角色有什么不对吗
string = string.replaceAll("<", "");
string = string.replaceAll("div>", "");
string = string.replaceAll("p>", "");
文本节点包含转义HTML实体(
为
,大于)和垃圾字符(大体上)。您应该首先根据输入源调整编码,然后使用
此方法(希望)返回一个XML,您可以查询(例如使用XPath)以提取所需的文本节点,或者将整个字符串提供给或
测试程序(需要JSOUP和Commons语言)
包堆栈溢出;
导入org.apache.commons.lang3.StringEscapeUtils;
导入org.jsoup.jsoup;
导入org.jsoup.safety.Whitelist;
公共类嵌入HTML{
公共静态void main(字符串[]args){
String src=“divp-An-independent”+
“对9月11日袭击美国领事馆事件的调查”+
“在班加西杀了美国驻利比亚大使和”+
“另外三名美国人发现系统性故障”+
“在国务院,这导致了严重的不足”+
“特派团的安全。/p”;
字符串unescaped=StringEscapeUtils.unescapethml4(src);
System.out.println(Jsoup.clean(unscaped,new Whitelist());
}
}
使用Html.fromHTML()运行节点值两到三次,就可以了
说明:内置的Html.fromHTML()方法将把杂乱无章的Html转换成可用的内容。此处的伪代码:
sHTML = node.getNodeValue()
sHTML = Html.fromHTML(sHTML)
sHTML = Html.fromHTML(sHTML)
sHTML = Html.fromHTML(sHTML)
到第三次或第四次阅读时,不可读的内容将再次变得可读。你可以在文本视图中显示,也可以在网络视图中加载数据。divp一项针对9月11日美国驻班加西领事馆袭击事件的独立调查发现,美国国务院的系统性失误导致特派团“严重”安保不足/汉克斯·埃莱克斯。甚至我都无法获取数据..我尝试在上面的代码中它没有显示任何内容。我在提取数据时遇到问题。一旦提取数据,我就可以执行这个replaceall()方法。通过使用“element.item(2).getFirstChild().getNodeValue():”我可以转到相应的节点,但是我不能从中获得值,还有一件事,我没有控制权来更改输入(即)Xml文件,您不必更改任何内容。我不明白,如果你看不到它的内容,为什么你认为你得到了正确的节点…为什么因为在标签中有一些特殊的角色出现了…这就是拉斐尔的问题。你有一个很好的名字。还有一张很好的脸;)
string = string.replaceAll("<", "");
string = string.replaceAll("div>", "");
string = string.replaceAll("p>", "");
// JSOUP, "html" is the unescaped string. Returns a string
Jsoup.parse(html).text();
// Android
android.text.Html.fromHtml(instruction).toString()
package stackoverflow;
import org.apache.commons.lang3.StringEscapeUtils;
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
public class EmbeddedHTML {
public static void main(String[] args) {
String src = "<description> <div><p> An independent" +
" inquiry into the September 11 attack on the US Consulate" +
" in Benghazi that killed the US ambassador to Libya and" +
" three other Americans has found that systematic failures" +
" at the State Department led to “grossly†inadequate" +
" security at the mission. </p></description>";
String unescaped = StringEscapeUtils.unescapeHtml4(src);
System.out.println(Jsoup.clean(unescaped, new Whitelist()));
}
}
sHTML = node.getNodeValue()
sHTML = Html.fromHTML(sHTML)
sHTML = Html.fromHTML(sHTML)
sHTML = Html.fromHTML(sHTML)