2011-02-17 7 views
-1

Comment voulez-vous analyser les données XML comme suit avec python feedparserpython feedparser

<Book_API> 
<Contributor_List> 
<Display_Name>Jason</Display_Name> 
</Contributor_List> 
<Contributor_List> 
<Display_Name>John Smith</Display_Name> 
</Contributor_List> 
</Book_API> 

Répondre

2

Comme Lennart Regebro mentionné, il ne semble pas un flux RSS/Atom, mais juste un document XML. Il existe plusieurs fonctions d'analyse XML (SAX et DOM à la fois) dans les bibliothèques standard Python. Je vous recommande ElementTree. Aussi lxml est le meilleur (qui est le remplacement de ElementTree) dans les bibliothèques tierces.

try: 
    from lxml import etree 
except ImportError: 
    try: 
     from xml.etree.cElementTree as etree 
    except ImportError: 
     from xml.etree.ElementTree as etree 

doc = """<Book_API> 
<Contributor_List> 
<Display_Name>Jason</Display_Name> 
</Contributor_List> 
<Contributor_List> 
<Display_Name>John Smith</Display_Name> 
</Contributor_List> 
</Book_API>""" 
xml_doc = etree.fromstring(doc) 
4

Cela ne ressemble pas à une sorte de flux RSS/ATOM. Je n'utiliserais pas du tout le feedparser pour cela, j'utiliserais lxml. En fait, Feedparser n'a aucun sens et laisse tomber le contributeur "Jason" dans votre exemple.

from lxml import etree 

data = <fetch the data somehow> 
root = etree.parse(data) 

Maintenant, vous avez un arbre d'objets XML. Comment le faire dans lxml plus spécifiquement est impossible à dire jusqu'à ce que vous donniez réellement des données XML valides.

Questions connexes