我嘗試使用android.sax和android.utils.Xml方法解析rdf文件。我的解析器不會輸出任何異常。Android薩克斯與rdf
RDF文件:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss1full.xsl"?>
<?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns="http://purl.org/rss/1.0/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
<channel rdf:about="http://www.olympique-et-lyonnais.com/">
<title>OL Blog | Olympique et Lyonnais</title>
<description />
<link>http://www.olympique-et-lyonnais.com/</link>
<dc:language>fr</dc:language>
<dc:creator />
<dc:rights />
<dc:date>2010-06-01T23:23:50+02:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.dotclear.net/" />
<sy:updatePeriod>daily</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2010-06-01T23:23:50+02:00</sy:updateBase>
<items>
...
</items>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rdf+xml" href="http://feeds.feedburner.com/oetl" /><feedburner:info uri="oetl" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
</channel>
<item rdf:about="http://www.olympique-et-lyonnais.com/ligue-1/la-toul-ce-tlier,4513.html">
<title>La Toul, ce tôlier</title>
<link>http://feedproxy.google.com/~r/oetl/~3/RycUlTDp3eY/la-toul-ce-tlier,4513.html</link>
<dc:date>2010-06-01T23:23:50+02:00</dc:date>
<dc:language>fr</dc:language>
<dc:creator>Aurelien</dc:creator>
<dc:subject>Ligue 1</dc:subject>
<description>Décidément très bavard ces derniers temps notamment dans la presse, Jean-Michel Aulas n'a pas seulement livré le plan de recrutement de l'OL, il a aussi parlé de certains joueurs actuellement en place au club et de leur avenir. Le président est notamment...</description>
<content:encoded><![CDATA[Décidément très bavard ces derniers temps notamment dans la presse, Jean-Michel Aulas n'a pas seulement livré le plan de recrutement de l'OL, il a aussi parlé de certains joueurs actuellement en place au club et de leur avenir. Le président est notamment...<img src="http://feeds.feedburner.com/~r/oetl/~4/RycUlTDp3eY" height="1" width="1"/>]]></content:encoded>
<feedburner:origLink>http://www.olympique-et-lyonnais.com/ligue-1/la-toul-ce-tlier,4513.html</feedburner:origLink></item>
...
</rdf:RDF>
我的解析器:
static final String RDF_NAMESPACE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
static final String ATOM_NAMESPACE = "http://www.w3.org/2005/Atom";
static final String RSS_NAMESPACE = "";
try{
RootElement root;
Element itemlist;
Element item;
String namespace;
if(feedsTypes[i].equals("RDF")){
Log.i(TAG, "RDF feed");
namespace = RDF_NAMESPACE;
root = new RootElement(RDF_NAMESPACE, feedsTypes[i]);
item = root.getChild(RDF_NAMESPACE, ITEM);
}
else{
Log.i(TAG, "RSS feed");
namespace = RSS_NAMESPACE;
root = new RootElement(RSS_NAMESPACE, feedsTypes[i]);
itemlist = root.getChild(RSS_NAMESPACE, CHANNEL);
item = itemlist.getChild(RSS_NAMESPACE, ITEM);
}
item.setStartElementListener(new StartElementListener(){
@Override
public void start(Attributes attributes) {
Log.i(TAG, "item///");
}
});
item.setEndElementListener(new EndElementListener(){
public void end() {
Log.i(TAG, "///item");
messages.add(currentMessage.copy());
}
});
item.getChild(namespace, TITLE).setEndTextElementListener(new EndTextElementListener(){
public void end(String body) {
Log.i(TAG, body);
currentMessage.setTitle(body);
}
});
Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler());
}
catch(Exception e){
Log.w(TAG, e.getMessage());
}
有沒有誰可以告訴我,我做錯了嗎?
如果您解析任意RDF,那麼強烈建議使用RDF/XML解析器(而不是通用XML解析器)。儘管這個例子與RSS類似(因此XML的結構比任意的RDF更具可預測性),並且通過XML解析器解析它可能沒有問題。 – CaptSolo 2012-05-04 08:56:59