associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "LendoXmlComLibxml2"

Diferenças entre as versões de 5 e 10 (5 versões de distância)
Revisão 5e 2004-10-28 15:29:54
Tamanho: 1380
Editor: 4-150
Comentário:
Revisão 10e 2008-09-26 14:07:39
Tamanho: 2059
Editor: localhost
Comentário: converted to 1.6 markup
Deleções são marcadas assim. Adições são marcadas assim.
Linha 45: Linha 45:
# Le arquivo xml do disco
Linha 47: Linha 48:
# Testa se o arquivo existe , se não existir fecha
# o socket com arquivo e sai com erro.
Linha 50: Linha 53:
 sys.exit  sys.exit(1)
Linha 52: Linha 55:
# Pega o elemento Root neste caso vai ser "<story>"
Linha 54: Linha 58:
# Testa se a variável "cur" está vazia se estiver
# o documento deve estar vazio.
Linha 58: Linha 64:
# E ainda testa se o nó root do documento é mesmo o
# nó "<story>"
Linha 64: Linha 71:
# Pega o nó filho de "<story>" para nós "<storyinfo>"
Linha 66: Linha 74:
# Enquanto "cur" não estiver vazia loop ou seja pegue todos
# os <storyinfo>.
Linha 68: Linha 78:
                # Se for "<storyinfo>" chama a função "parseStory"
                # que vai pegar os valores internos dele.
Linha 73: Linha 85:
Voçê pode ver o codigo C em [http://www.xmlsoft.org/tutorial/apc.html Libxml Tutorial por John Fleck] Você pode ver o codigo C em [[http://www.xmlsoft.org/tutorial/apc.html|Libxml Tutorial por John Fleck]]
Linha 80: Linha 92:

Wiliam Alves de Souza -- (waa) -- wiliam(arroba)linuxmail(ponto)org
WiliamAlvesDeSouza -- (waa) -- wiliamsouza83(arroba)gmail(ponto)com

Receita: LendoXmlComLibxml2

  • Todo o manejo de XML no GNOME é feito a través da libxml, com ele podemos ler e modificar arquivos XML.

Vejamos um exemplo.

O arquivo XML

<?xml version="1.0"?>
<story>
        <storyinfo>
                <author>John Fleck</author>
                <datewritten>June 2, 2002</datewritten>
                <keyword>example keyword</keyword>
        </storyinfo>
        <body>
                <headline>This is the headline</headline>
                <para>This is the body text.</para>
        </body>
</story>

Código

   1 import sys
   2 
   3 import libxml2
   4 
   5 def parseStory (cur):
   6 
   7         cur = cur.children
   8 
   9         while cur != None:
  10                 if cur.name == "keyword":
  11                         print "Keyword: %s" % cur.getContent()
  12                 cur = cur.next
  13         sys.exit(0)
  14 
  15 # Le arquivo xml do disco
  16 doc = libxml2.parseFile("sample_Document.xml")
  17 
  18 # Testa se o arquivo existe , se não existir fecha
  19 # o socket com arquivo e sai com erro.
  20 if doc == None:
  21         print "Document not parsed successfully."
  22         doc.freeDoc()
  23         sys.exit(1)
  24 
  25 # Pega o elemento Root neste caso vai ser "<story>"
  26 cur = doc.getRootElement()
  27 
  28 # Testa se a variável "cur" está vazia se estiver
  29 # o documento deve estar vazio.
  30 if cur == None:
  31         print "Empty Document."
  32         doc.freeDoc()
  33         sys.exit(1)
  34 # E ainda testa se o nó root do documento é mesmo o
  35 # nó "<story>"
  36 if cur.name != "story":
  37         print "Document of the wrong type, root node != story"
  38         doc.freeDoc()
  39         sys.exit(1)
  40 
  41 # Pega o nó filho de "<story>" para nós "<storyinfo>"
  42 cur = cur.children
  43 
  44 # Enquanto "cur" não estiver vazia loop ou seja pegue todos
  45 # os <storyinfo>.
  46 while cur != None:
  47         if cur.name == "storyinfo":
  48                 # Se for "<storyinfo>" chama a função "parseStory"
  49                 # que vai pegar os valores internos dele.
  50                 parseStory(cur)
  51         cur = cur.next
  52 doc.freeDoc()

Você pode ver o codigo C em Libxml Tutorial por John Fleck

Volta para CookBook.


WiliamAlvesDeSouza -- (waa) -- wiliamsouza83(arroba)gmail(ponto)com