питон питер - PullRequest
       7

питон питер

0 голосов
/ 17 февраля 2011

Как бы вы проанализировали XML-данные следующим образом с помощью python feedparser

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

Ответы [ 2 ]

4 голосов
/ 17 февраля 2011

Это не похоже ни на какой канал RSS / ATOM. Я бы не стал использовать feedparser для этого, я бы использовал lxml. Фактически, feedparser не может иметь никакого смысла в этом и удаляет вкладчика "Jason" в вашем примере.

from lxml import etree

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

Теперь у вас есть дерево объектов xml. Как сделать это в lxml более конкретно, невозможно сказать, пока вы на самом деле не предоставите действительные данные XML. ;)

2 голосов
/ 17 февраля 2011

Как упомянул Леннарт Регебро, похоже, это не лента RSS / Atom, а просто документ XML.В стандартных библиотеках Python есть несколько средств синтаксического анализа XML (SAX и DOM оба).Я рекомендую вам ElementTree .Также lxml является лучшим (который заменяет ElementTree) в сторонних библиотеках.

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)
...