使用Java解析<enclosure>标记

时间:2017-06-23 14:22:00

标签: java android xml parsing

我想解析rss feed的这一行

<enclosure url="http://media.nu.nl/m/32zx6jhahx6v_sqr256.jpg/verdachte-aanslag-moslims-in-londen-vervolgd-terroristische-moord.jpg" length="0" type="image/jpeg"></enclosure>

所以我可以在ImageView中使用它。

我写了一个完整的课程来解析&amp;标签,但我不能以某种方式使用此类,因为机箱标签不会关闭但仍在继续

这是我写的课程

public class RSSReader {
    //Lists to store headlines, descriptions & images
    String url = "http://www.nu.nl/rss/Algemeen";
    List<String> titleList;
    List<String> descriptionList;
    List<String> imageList;
    public RSSReader() throws IOException{
        titleList = readRSS(url, "<title>");
        descriptionList= listFilter(readRSS(url, "<description>"), "&amp;nbsp;", "");
        imageList = readRSS(url, "<enclosure>");
    }
    public List<String> readRSS(String feedUrl, String tag) throws IOException, MalformedURLException {
        URL url = new URL(feedUrl);
        BufferedReader reader= new BufferedReader(new InputStreamReader(url.openStream()));
        String closingTag = new StringBuilder(tag).insert(1, "/").toString();
        String currentLine;
        List<String> tempList = new ArrayList<String>();
        while((currentLine = reader.readLine()) != null){
            Integer tagEndIndex = 0;
            Integer tagStartIndex = 0;
            while (tagStartIndex >= 0){
                tagStartIndex = currentLine.indexOf(tag, tagEndIndex);
                if(tagStartIndex >= 0){
                    tagEndIndex = currentLine.indexOf(closingTag, tagStartIndex);
                    tempList.add(currentLine.substring(tagStartIndex + tag.length(), tagEndIndex) + "\n");
                }
            }
        }
        tempList.remove(0);
        return tempList;
    }

    public List<String> getDesciptionList(){
        return descriptionList;
    }

    public List<String> getTitleList(){
        return titleList;
    }
    public List<String> getImageList(){
        return imageList;
    }

    public List<String> listFilter(List<String> tempList, String require, String replace){
        //Creates new List
        List<String> newList = new ArrayList<>();
        //Loops through old list and checks for the 'require' variable
        for(int i = 0; i < tempList.size(); i++){
            if(tempList.get(i).contains(require)){
                newList.add(tempList.get(i).replace(require, replace));
            }
            else{
                newList.add(tempList.get(i));
            }
        }
        return newList;
    }
}

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

解决我自己的问题。参见imagelist +构造函数

public class RSSReader {
    //Lists to store headlines, descriptions & images
    String url = "http://www.nu.nl/rss/Algemeen";
    List<String> titleList;
    List<String> descriptionList;
    List<String> imageList;
    public RSSReader() throws IOException{
        titleList = readRSS(url, "<title>", "</title>");
        descriptionList= listFilter(readRSS(url, "<description>", "</description>"), "&amp;nbsp;", "");
        imageList = readRSS(url, "<enclosure url \"", "\" length=\"0\" type=\"image/jpeg\"</enclosure>");
    }
    public List<String> readRSS(String feedUrl, String openTag, String closeTag) throws IOException, MalformedURLException {
        URL url = new URL(feedUrl);
        BufferedReader reader= new BufferedReader(new InputStreamReader(url.openStream()));

        String currentLine;
        List<String> tempList = new ArrayList<String>();
        while((currentLine = reader.readLine()) != null){
            Integer tagEndIndex = 0;
            Integer tagStartIndex = 0;
            while (tagStartIndex >= 0){
                tagStartIndex = currentLine.indexOf(openTag, tagEndIndex);
                if(tagStartIndex >= 0){
                    tagEndIndex = currentLine.indexOf(closeTag, tagStartIndex);
                    tempList.add(currentLine.substring(tagStartIndex + openTag.length(), tagEndIndex) + "\n");
                }
            }
        }
        tempList.remove(0);
        return tempList;
    }

    public List<String> getDesciptionList(){
        return descriptionList;
    }

    public List<String> getTitleList(){
        return titleList;
    }
    public List<String> getImageList(){
        return imageList;
    }

    public List<String> listFilter(List<String> tempList, String require, String replace){
        //Creates new List
        List<String> newList = new ArrayList<>();
        //Loops through old list and checks for the 'require' variable
        for(int i = 0; i < tempList.size(); i++){
            if(tempList.get(i).contains(require)){
                newList.add(tempList.get(i).replace(require, replace));
            }
            else{
                newList.add(tempList.get(i));
            }
        }
        return newList;
    }


}