某些引号和撇号无法正确解析

时间:2010-12-13 10:35:53

标签: android xml-parsing

好的,首先,我是Android编程的菜鸟。我已经学了一些Java,但我还在学习(不是我们所有人)。 我正在尝试使用源代码格式here并让它正确读取RSS源。目前我有2个问题。我只是陈述第一个,然后发布另一个帖子 一个RSS源显示在我的设备上,它不包括所有细节(描述)。当我通过浏览器加载feed时,我注意到一些引号和撇号变成了“和”。由于某种原因,这会阻止解析器正确解析它。任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我使用UTF-8编码进行解析。但在制作ISO-8859-1之后,一切都正常了。 我不能粘贴完整的代码,但只是一个样本,你可以在哪里进行更改如下: 我以前的解析代码是

Xml.parse(feedStream, Xml.Encoding.UTF_8, root.getContentHandler());

之后我将其转换如下:

Xml.parse(feedStream, Xml.Encoding.ISO_8859_1, root.getContentHandler());

答案 1 :(得分:0)

我发现了问题的原因。我不得不在charcters方法中设置一个字符串缓冲区。

public void characters(char ch[] , int start, int length)
{
    if (buffering)
            buf.append(ch, start, length);

}

一旦我这样做,我只是在存储数据时将stringbuffer分配给“endelement”方法中的字符串。

public void endElement(String namespaceURI, String localName, String qName) throws SAXException
{

    String content = buf.toString();
    Log.i("RSSReader  ",currentstate +"  " + content + "]");
    switch (currentstate)
    {
        case RSS_TITLE:
                _item.setTitle(content);
                buffering = false;
            currentstate = 0;
            break;
        case RSS_LINK:
                _item.setLink(content);
                buffering = false;
            currentstate = 0;
            break;
        case RSS_DESCRIPTION:
                _item.setDescription(content);
                buffering = false;
            currentstate = 0;
            break;

    }

之后一切正常。