gpt4 book ai didi

android - 如何用 SAX 解析 rss-feed,其他解析方法?

转载 作者:行者123 更新时间:2023-11-29 02:02:07 24 4
gpt4 key购买 nike

我正在尝试解析多个属性但没有成功。

我很好地解析了这些属性:

<id>..</id>
<published>..</published>
<content>..</content>
<title>..</title>

我解析的 xml 图像和我需要的数据:
enter image description here
但我需要使用标签获取属性:
<media:thumbnail url='http://ww.../> </media:thumbnail>
<media:content url='http://ww.../> </<media:content>

我在某处读到 sax parse 不支持这样做,我当时不明白这是真的。

我使用的代码是执行解析:
public class YoutubePARSER {
private static final String LOGTAG = "LogsAndroid";
private ArrayList<YoutubeVO> videos = new ArrayList<YoutubeVO>();
private YoutubeVO video;
private URL rssUrl;
final String myString = "http://www.w3.org/2005/Atom";

SAXParserFactory parser = SAXParserFactory.newInstance();

public YoutubePARSER(String url)
{
try
{
this.rssUrl = new URL(url);
}
catch (MalformedURLException e)
{
throw new RuntimeException(e);
}
}

public ArrayList<YoutubeVO> parse()
{
RootElement root = new RootElement(myString, "feed");
Element itemPlace = root.getChild(myString, "entry");
itemPlace.setStartElementListener(new StartElementListener(){
public void start(Attributes attrs){
video = new YoutubeVO();
}
});

itemPlace.setEndElementListener(new EndElementListener(){
public void end() {
videos.add(video);
}
});

itemPlace.getChild(myString, "id").setEndTextElementListener(
new EndTextElementListener(){
public void end(String body) {
video.setId(body);
}
});

itemPlace.getChild(myString, "published").setEndTextElementListener(
new EndTextElementListener(){
public void end(String body) {
video.setPublished(body);
}
});

我尝试通过以下方式解析该字段,但没有成功:
 itemPlace.getChild(myString, "media:thumbnail").setEndTextElementListener(
itemPlace.getChild(myString, "media").setEndTextElementListener(
itemPlace.getChild(myString, "thumbnail").setEndTextElementListener(
itemPlace.getChild(myString, "media:thumbnail url").setEndTextElementListener(

有什么解决办法??

谢谢!

最佳答案

为了能够阅读“ media:content ”或任何其他“ media: ”元素,您需要指定媒体 命名空间 .

您在代码中设置了错误的 namespace 并使用了 myString="http://www.w3.org/2005/Atom"

itemPlace.getChild(myString, "thumbnail").setEndTextElementListener(

将其更改为正确的命名空间将像一个魅力:
itemPlace.getChild("http://search.yahoo.com/mrss/", "thumbnail")setElementListener(new ElementListener() {
@Override
public void end() {

}

@Override
public void start(Attributes attributes) {
String urlAttr = attributes.getValue("url");
}
});

注意:您不需要指定命名空间前缀,只需使用元素名称(在本例中为缩略图)。

关于android - 如何用 SAX 解析 rss-feed,其他解析方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com