簡體   English   中英

在Java中解析XML時,從String中刪除無效字符

[英]Remove invalid characters from String when parsing XML in Java

我一直在谷歌上搜索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);
}

描述標簽中的文字很長,但我只得到
之前的前五個單詞
 人物開始來了。

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

只讀一個XML元素時,可以多次調用characters() - 方法。 當它發現類似<desc>blabla bla & # 39; bla bla la.</desc> <desc>blabla bla & # 39; bla bla la.</desc>

解決方案是使用StringBuilder並在characters() -method中附加readed字符,然后在endElement() -method中重置StringBuilder

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>

輸出是:

輸出:這是一些
例如文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM