Android rss源解析

Android rss源解析,android,rss,Android,Rss,我是android新手,在我的应用程序中,我必须解析数据,我需要在屏幕上显示。但在一个特定的标签数据中,我无法解析原因,因为标签中也有一些特殊字符。下面我显示我的代码 我的解析器函数: protected ArrayList<String> doInBackground(Context... params) { // context = params[0]; DocumentBuilderFactory factory = DocumentBu

我是android新手,在我的应用程序中,我必须解析数据,我需要在屏幕上显示。但在一个特定的标签数据中,我无法解析原因,因为标签中也有一些特殊字符。下面我显示我的代码

我的解析器函数:

  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("&lt;div&gt;&lt;p&gt;"," "));
                    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("&lt;", "");
string = string.replaceAll("div&gt;", "");
string = string.replaceAll("p&gt;", "");
文本节点包含转义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("&lt;", "");
string = string.replaceAll("div&gt;", "");
string = string.replaceAll("p&gt;", "");
// 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> &lt;div&gt;&lt;p&gt; 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. &lt;/p&gt;</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)