[python] xml.etree.ElementTree , parsování xml

Petr Messner petr.messner na gmail.com
Úterý Červenec 27 15:39:23 CEST 2010


Když udělám track.find("name").text, tak ten text dostanu.

Kód na http://gist.github.com/492225 začne vypisovat názvy skladeb.

Mimochodem, pokud máš s XML výstupem z Last.fm problémy, můžeš použít
nějakou již připravenou knihovnu nebo zkusit JSON výstup (do url
přidat parametr format=json).

Petr Messner


2010/7/27 Visgean Skeloru <visgean na gmail.com>:
> Tak zdrojový kód je tady: http://gist.github.com/492183 a parsovaný soubor
> tady:
> http://ws.audioscrobbler.com/2.0/?method=library.gettracks&api_key=1851f14522298bf83a76b21c222c8af2&user=Visgean&page=1
> , a to o čem já mluvím je na řádce 46:
>>
>> print track.find("name")
>>
>
> což odpovídá xml v tom souboru:
>
>> <name>The Ballad Of Chasey Lain</name>
>>
>
>
> a ještě jedna věc:
>
>> >>>print dir(track.find("name"))
>>
>> ['__delitem__', '__delslice__', '__doc__', '__getitem__', '__getslice__',
>> '__init__', '__len__', '__module__', '__repr__', '__setitem__',
>> '__setslice__', '_children', 'append', 'attrib', 'clear', 'find', 'findall',
>> 'findtext', 'get', 'getchildren', 'getiterator', 'insert', 'items', 'keys',
>> 'makeelement', 'remove', 'set', 'tag', 'tail', 'text']
>>
>>
> a já prostě nevím jak z toho mam dostat tu hodnotu, k atributům se dostanu -
> viz řádek 30...
>
>
> 2010/7/27 Jirka Vejrazka <jirka.vejrazka na gmail.com>
>>
>> > Dobrý den, mám tu objekt elementu z modulu xml.etree.ElementTree který
>> > odpovídá kodu <name>Pepa</name> ... nevíte jak z toho mam dostat Pepu?
>> > Zkoušel jsem metody z dokumentace -
>> > http://docs.python.org/library/xml.etree.elementtree.html ale všechny my
>> > vracejí nanejvýš atributy, nikoliv však Pepu :( Nevíte někdo jak
>> > osvobodit
>> > Pepu z xml klece?
>>
>> Ahoj,
>>
>>  to je trochu tezke, kdyz nenapises co uz jsi vyzkousel a
>> nefungovalo. Nevim, jak vypada zbytek tveho XML, ale vyzkousel bych
>> neco ve stylu:
>>
>> et = ElementTree()
>> data = et.parse(muj_soubor)
>> names = data.findall('name')
>> for name in names:
>>    print name.text
>>
>>
>> Ale je to jenom strelene od boku, nedal jsi dost informaci.
>>
>>   Jirka
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>


Další informace o konferenci Python