在Java中解析XML时,从String中删除无效字符

时间:2011-09-01 13:44:43

标签: java android xml parsing

我一直在谷歌上搜索SO,但没有任何效果。我在XML Feed中遇到字符问题。我在String中保存每个标记的值,但是当
出现时,它就会停止。我只在标签中得到4-5个第一个单词。

那么有人可以帮我一个可以删除它的方法吗?或者可能是XML Feed中标签中的文本对于String来说太长了?

谢谢!

示例代码:

    public void characters(char[] ch, int start, int length)
        throws SAXException {

    if (currentElement) {
        currentValue = new String(ch, start, length);
        currentElement = false;
    }

}

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

    currentElement = false;

    /** set value */ 
    if (localName.equalsIgnoreCase("title"))
        sitesList.setTitle(currentValue);
    else if (localName.equalsIgnoreCase("id"))
        sitesList.setId(currentValue);
    else if(localName.equalsIgnoreCase("description"))
        sitesList.setDescription(currentValue);
}

description标签中的文字很长,但我只在
个字符开始出现之前得到前五个字。

1 个答案:

答案 0 :(得分:1)

您正在使用SAXparser来解析XML-String。

只读一个XML元素时,可以多次调用characters() - 方法。当它找到类似<desc>blabla bla & # 39; bla bla la.</desc>的内容时会发生这种情况。

解决方法是使用StringBuilder并在characters() - 方法中附加已重新添加的字符,然后重置StringBuilder方法中的endElement()

private class Handler extends DefaultHandler{

    private StringBuilder temp_val;

    public Handler(){
        this.temp_val = new StringBuilder();
    }

    public void characters(char[] ch, int start, int length){
        temp_val.append(ch, start, length);
    }

    public void endElement(String uri, String localName, String qName){
        System.out.println("Output: "+temp_val.toString());
        // ... Do your stuff
        temp_val.setLength(0); // Reset the StringBuilder
    }

}

鉴于此XML-File:

,上述代码适用于我
<?xml version="1.0" encoding="iso-8859-1" ?>
<test>This is some &#13; example-text.</test>

输出结果为:

  

输出:这是一些    例如文本。

相关问题