有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓使用Java解析<enclosure>标记

我想解析这行rss提要

<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中使用它

我已经编写了一个完整的类来解析&;标记,但我不能以某种方式使用这个类,因为enclosure标记不在关闭,而是继续

这是我写的课

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) 个答案

  1. # 1 楼答案

    我自己问题的解决办法。请参见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;
        }
    
    
    }