2010-06-03 7 views
0

나는 android.sax 및 android.utils.Xml 메소드를 사용하여 rdf 파일을 구문 분석하려고합니다. 내 구문 분석기는 아무 것도 출력하지 않으며 예외를 보내지 않습니다.rdf가있는 Android sax

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&eacute;cid&eacute;ment tr&egrave;s bavard ces derniers temps notamment dans la presse, Jean-Michel Aulas n'a pas seulement livr&eacute; le plan de recrutement de l'OL, il a aussi parl&eacute; de certains joueurs actuellement en place au club et de leur avenir. Le pr&eacute;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()); 
    } 

있습니까?

+0

임의의 RDF를 구문 분석하는 경우 RDF/XML 파서 (일반 XML 파서는 아님)를 사용하는 것이 좋습니다. 이 예제는 RSS와 유사하지만 (따라서 XML의 구조는 임의의 RDF보다 예측 가능합니다) XML 파서를 사용하여 파싱하는 것이 좋습니다. – CaptSolo

답변

1

<rdf:RDF ...> <item>...</item> </rdf:RDF>

항목 요소가 RDF에없는 : 네임 스페이스 관련 명령 읽어야합니다 항목 = root.getChild ("", ITEM);

+0

고맙습니다. :) – BOSSoNe

0

일반적인 피드 자바 파서를 사용하지 않는 이유는 무엇입니까?

사실, 코드의 RSS_NAMESPACE 변수는 파일에 사용 된 네임 스페이스와 맞지 않습니다. 기본 네임 스페이스는 빈 네임 스페이스를 의미하지 않습니다.