http://effbot.org/zone/element.htm
On 4/26/07, Paul Eipper <lkra...@gmail.com> wrote:
> Olá,
>
> Eu tenho um "banco de dados" em XML que arquiva informações do
> conteúdo de mídias removíveis (CD's, DVD's, etc).
>
> O que eu quero é usar o Python para buscar uma informação nesse
> catálogo e retornar as informações pertinentes. Exemplo:
>
> <catalog name="Catalogo de Discos" owner="Me" time="Apr 26 14:00 2007">
> <datafile version="1.4"/>
> <comment> </comment>
> <media name="Backup" number="1" owner="Me" type="CD" time="Apr 26 14:00 2007">
> <directory name="documentos" time="Dec 06 13:41 2006">
> <file name="cartao_natal.odf" size="43.53 Mb" time="Dec 06 13:05 2006">
> </file>
> </directory>
> <directory name="musicas" time="Dec 28 13:37 2006">
> <file name="Joe Satriani & Metallica.mp3" size="3.41 Mb"
> time="Oct 14 19:47 2006">
> <comment>3:44, 128 kbps#44100Hz, Simple stereo
> </comment>
> <mp3tag artist="Joe Satriani" title="Instrumental" album=" "
> year=" "> </mp3tag>
> </file>
> </directory>
> </media>
> </catalog>
>
> O que eu quero, é fazer uma busca por algum atributo ou texto, e que
> me retorne o catálogo, disco, pasta e arquivo que coincida. Ex:
>
> >>> Busca = "Instrumental" # vai achar no atributo 'title' da tag <mp3tag>
> >>> Resultado = catalogo.find(Busca) # por exemplo
> >>> print Resultado
> [{"media":"Backup/1", "path":"//Catalogo de Discos/Backup/musicas/Joe
> Satriani & Metallica.mp3", "size":"3.41 Mb", "time":"Oct 14 19:47
> 2006"}]
>
> Alguém sabe se existe alguma lib de xml que possibilita isso?
>
> Obrigado
> --
> Paul Eipper
>
>
> ,-----------------------------------------------------------.
> | Antes de enviar um e-mail para o grupo leia: |
> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
> | E se você é usuário do BOL lembre-se de cadastrar o |
> | e-mail do grupo na lista branca do seu sistema anti-spam. |
> `-----------------------------------------------------------´
> Links do Yahoo! Grupos
>
>
>
--
Até,
Luciano
<quote>
"Na prática, a teoria é outra!"
</quote>
:wq!
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
Em 26/04/07, Luciano Rodrigues da Silva <lucro...@gmail.com> escreveu:
>
> Elementtree? Ainda não usei, mas parece bom.
>
> http://effbot.org/zone/element.htm
>
> > ,----------------------------------------------------------.
> > | Antes de enviar um e-mail para o grupo leia: |
> > | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
> > | E se você é usuário do BOL lembre-se de cadastrar o |
> > | e-mail do grupo na lista branca do seu sistema anti-spam. |
> > `----------------------------------------------------------´
> > Links do Yahoo! Grupos
> >
> >
> >
>
> --
> Até,
>
> Luciano
>
> <quote>
> "Na prática, a teoria é outra!"
> </quote>
>
> :wq!
>
>
[As partes desta mensagem que não continham texto foram removidas]
Consegui adaptar um pouco pro meu caso, mas ainda falta aprender muito
sobre XSLT... é meio chato, mas ter acesso via rede é algo bem
interessante, especialmente no meu caso que quero com que várias
máquinas possam buscar no mesmo catálogo.
Estava pensando em só compartilhar o arquivo + python app via rede,
mas essa solução veio bem a calhar :)
Pelo que vi, o ElementTree tem um conjunto de instruções XPath mais
reduzido[2][3] e provavelmente poderia fazer o mesmo; já o DOM
(minidom) precisaria codificar estruturas de repetição manualmente
para realizar buscas (não muito diferente de trabalhar em javascript).
[1] http://www.xml.com/pub/a/2004/01/21/udell.html
[2] http://developer.yahoo.com/python/python-xml.html
[3] http://www-128.ibm.com/developerworks/library/x-matters28/
--
Paul Eipper
Em 26/04/07, Vanderson Mota dos Santos<vanders...@gmail.com> escreveu:
--
Paul Eipper
Em 26/04/07, Paul Eipper<lkra...@gmail.com> escreveu:
> Olá,
>
> Eu tenho um "banco de dados" em XML que arquiva informações do
> conteúdo de mídias removíveis (CD's, DVD's, etc).
Por "banco de dados" vc quer dizer:
(a) um monte de arquivinhos XML,
(b) 1 único arquivão XML
(c) n.r.a
Existem Native XML Databases [1], que estão começando a despontar
por aí. Eu mesmo estou investigando estes caboclos para ver se
tem algum danado-de-bãum ;o)
Basicamente temos:
1 - arquivos XML no file system
2 - arquivos XML (inteiros) em BLOBS dentro de bancos relacionais
3 - arquivos XML (quebrados) em colunas dentro de bancos relacionais
4 - sistemas híbridos conasiderando 1,2,3
5 - sistemas específicos para o armazenamento e
indexação eficiente de XML (pesquisa recente)
[1] http://en.wikipedia.org/wiki/XML_database
> O que eu quero é usar o Python para buscar uma informação nesse
> catálogo e retornar as informações pertinentes. Exemplo:
> Alguém sabe se existe alguma lib de xml que possibilita isso?
O cElementTree e lxml são de fato suas melhores opções no mundo Python.
(em termo de desempenho, não em número de features).
Se as buscas forem frequentes seria bom vc pensar em algum mecanismo
de indexação, a fim de evitar sempre o parse do xml.
A indexação varia de acordo como vc armazena o XML.
Suponhamos que vc tenha um bocado de arquivinhos XML.
Uma indexação bem simples é criar um dicionário (que pode
ser persistido via pickle ou que vc quiser) cuja chave é
o termo de busca e o valor é uma lista de arquivos em que
a chave aparece. Procure pelo termo "Listas Invertidas" e
vai achar um bocado de coisa interessante sobre indexação.
Abração,
Senra