[python] jak na xml

2008-12-18 Tema obsahu Ondrej Beranek
Ahoj je tomu téměř přesně rok co jsem naposled sáhnul na python. Dneska jsem
se dostal k tomu že bych znovu potřeboval
jeho služby. Řeším úlohu jejíž součástí je přečtení XML souboru a změna
(přesněji přepsání) některých hodnot (dat).

například mám něco jako (ted sem to vymyslel konkretni priklad nemohu
uvest):

dokument
 komponenta
   typauto_login/typ
   jmenoprihlaseni/jmeno
   usernamejmeno nekam/username
   passwdheslo1passwd
 /komponenta

 komponenta
   typauto_login/typ
   jmenologovani/jmeno
   usernamejmeno nekam/username
   passwdheslo1passwd
  /komponenta
/dokument

No a ja nekdy budu menit hodnotu username a password ovsem v zavislosti
na typu a a nekdy i jmene.

No chtel bych vas poprosit aby jste mi poradili nejakou komponentu se kterou
mate zkusenosti ze by zvladla takove xml (1.0 utf8) precist a zas ulozit.

Ondřej Beránek
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] jak na xml

2008-12-18 Tema obsahu Martin Stiborský
Pro práci s XML jsem používal ElementTree
http://effbot.org/zone/element-index.htm
Od kterési verze Pythonu je tato knihovna jeho součástí ..

Dne 18. prosinec 2008 14:13 Ondrej Beranek rain...@gmail.com napsal(a):
 Ahoj je tomu téměř přesně rok co jsem naposled sáhnul na python. Dneska jsem
 se dostal k tomu že bych znovu potřeboval
 jeho služby. Řeším úlohu jejíž součástí je přečtení XML souboru a změna
 (přesněji přepsání) některých hodnot (dat).

 například mám něco jako (ted sem to vymyslel konkretni priklad nemohu
 uvest):

 dokument
  komponenta
typauto_login/typ
jmenoprihlaseni/jmeno
usernamejmeno nekam/username
passwdheslo1passwd
  /komponenta

  komponenta
typauto_login/typ
jmenologovani/jmeno
usernamejmeno nekam/username
passwdheslo1passwd
   /komponenta
 /dokument

 No a ja nekdy budu menit hodnotu username a password ovsem v zavislosti
 na typu a a nekdy i jmene.

 No chtel bych vas poprosit aby jste mi poradili nejakou komponentu se kterou
 mate zkusenosti ze by zvladla takove xml (1.0 utf8) precist a zas ulozit.

 Ondřej Beránek

 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python




-- 
S pozdravem
Martin Stiborský

Jabber: st...@njs.netlab.cz
ICQ: 224-065-849
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] jak na xml

2008-12-18 Tema obsahu RMiklos



Cau,

Parsovat mozes pouzitim SAX a DOM, co Python standardne umoznuje.

Tu su nato priklady:

Dany je XML-dokument books5.xml, ktory vypada takto:

?xml version=1.0 encoding=windows-1250?
catalog
  book isbn=1-56592-724-9
titleThe Cathedral amp; the Bazaar/title
authorEric S. Raymond/author
  /book
  book isbn=1-56592-051-1
titleMaking TeX Work/title
authorNorman Walsh/author
  /book
  book isbn=80-247-0367-X
titleNaučte se Python/title
authorMark Lutz amp; David Ascher/author
  /book
  book isbn=63-558-81
titleKompilátory čislicových počítačov/title
authorDavid Gries/author
  /book
  book isbn=80-05-00153-3
titleAlgoritmy a štruktúry údajov/title
authorNiklaus Wirth/author
  /book
  book isbn=80-05-00153-3
titleAlgoritmy a štruktúry údajov/title
authorNiklaus Wirth/author
  /book
  book isbn=80-7226-799-X
titleZačínáme programovat v jazyce Python/title
authorDaryl Harms amp; Kenneth McDonald/author
  /book
  book isbn=80-251-0343-9
titleAlgoritmy - Datové struktury a programovací techniky/title
authorPiotr Wróblewski/author
  /book
  book isbn=80-86330-05-2
titlePython - Podrobná referenční příručka pro programovací jazyk
Python/title
authorDavid M. Beazley/author
  /book
  book isbn=x-y-z
titlePrůvodce jazykem SCHEME/title
authorSkoupil, D., Kopka, M./author
  /book
  book isbn=3-89319-744-3
titleEinführung in die Automathentheorie, Formale Sprachen und
Komplexitätstheorie/title
authorJohn E. Hopcroft, Jeffrey D. Ullman/author
  /book
  book isbn=80-247-0442-0
titlePHP4 - Učebnice základů jazyka/title
authorJiří Bráza/author
  /book
  book isbn=80-247-0441-2
titlePHP4 - Praktické příklady/title
authorJiří Bráza/author
  /book
/catalog


Parsovanie pouzitim DOM: dombook.py

import pprint
import xml.dom.minidom
from xml.dom.minidom import Node
doc = xml.dom.minidom.parse(books5.xml)
mapping = {}
# Vratit vsetky prvky typu book
# print doc.getElementsByTagName(book)
# Pre kazdy prvok book
for node in doc.getElementsByTagName(book):
  #urcit hodnotu atributu isbn
  isbn = node.getAttribute(isbn)
  # Zoznam dat ku knihe bude tvorit nazov a autor
  bookdata = []

  # vratist vsetky prvky typu title
  L = node.getElementsByTagName(title)
  # pre kazdy prvok typu title
  for node2 in L:
title = 
#print node2.childNodes
for node3 in node2.childNodes:
  if node3.nodeType == Node.TEXT_NODE:
title += node3.data
bookdata.append(title)
  # vratist vsetky prvky typu author
  L = node.getElementsByTagName(author)
  # pre kazdy prvok typu author
  for node2 in L:
author = 
#print node2.childNodes
for node3 in node2.childNodes:
  if node3.nodeType == Node.TEXT_NODE:
author += node3.data
bookdata.append(author)
  # vytvorit polozku slovniku
  mapping[isbn] = bookdata
keys = mapping.keys()
#keys.sort()
# vytlacit kluce a polozky slovnika do suboru
sf=open('knihy_DOM.txt','w')
for key in keys:
  s1=mapping[key][1].ljust(25)
  s2=mapping[key][0].ljust(30)
  # parsovane retazce su zakodovane do unicode, preto ich treba previest
  # do cp1250
  line = %s:  %s\n(ISBN %s)\n\
 %(s1.encode('cp1250'), s2.encode('cp1250'), key.encode('cp1250'))
  sf.write(line)
sf.close()

Vysledkom je subor knihy_DOM.txt, ktory vypada takto:

David M. Beazley :  Python - Podrobná referenční příručka pro
programovací jazyk Python
(ISBN 80-86330-05-2)
Niklaus Wirth:  Algoritmy a štruktúry údajov
(ISBN 80-05-00153-3)
Norman Walsh :  Making TeX Work
(ISBN 1-56592-051-1)
Daryl Harms  Kenneth McDonald:  Začínáme programovat v jazyce Python
(ISBN 80-7226-799-X)
John E. Hopcroft, Jeffrey D. Ullman:  Einführung in die Automathentheorie,
Formale Sprachen und Komplexitätstheorie
(ISBN 3-89319-744-3)
Piotr Wróblewski :  Algoritmy - Datové struktury a programovací
techniky
(ISBN 80-251-0343-9)
Skoupil, D., Kopka, M.   :  Průvodce jazykem SCHEME
(ISBN x-y-z)
Jiří Bráza   :  PHP4 - Učebnice základů jazyka
(ISBN 80-247-0442-0)
Eric S. Raymond  :  The Cathedral  the Bazaar
(ISBN 1-56592-724-9)
David Gries  :  Kompilátory čislicových počítačov
(ISBN 63-558-81)
Jiří Bráza   :  PHP4 - Praktické příklady
(ISBN 80-247-0441-2)
Mark Lutz  David Ascher :  Naučte se Python
(ISBN 80-247-0367-X)

Parsovanie pouzitim SAX: saxbook.py

import xml.sax.handler
class BookHandler(xml.sax.handler.ContentHandler):
  def __init__(self):
self.inTitle = 0
self.inAuthor = 0
self.mapping = {}
  def startElement(self, name, attributes):
if name == book:
  # Zoznam dat ku knihe bude tvorit nazov a autor
  self.bookdata = []
  self.title = 
  self.author = 
  self.isbn = attributes[isbn]
elif name == title:
  self.inTitle = 1
elif name == author:
  self.inAuthor = 1
  def characters(self, data):
if self.inTitle:
  self.title += data
elif self.inAuthor:
  self.author 

Re: [python] jak na xml

2008-12-18 Tema obsahu RMiklos
Zda sa ze moj vynikajuci emailovy klient Lotus Notes mi zmrsil odsadenie v 
zdrojakoch, ktore som pred chvilou zaslal.
Takze dufam, ze aspon prilohy budu ok.

-python-boun...@py.cz wrote: -


To: Konference PyCZ python@py.cz
From: Ondrej Beranek rain...@gmail.com
Sent by: python-boun...@py.cz
Date: 18.12.2008 14:13
Subject: [python] jak na xml

Ahoj je tomu téměř přesně rok co jsem naposled sáhnul na python. Dneska jsem se 
dostal k tomu že bych znovu potřeboval 
jeho služby. Řeším úlohu jejíž součástí je přečtení XML souboru a změna 
(přesněji přepsání) některých hodnot (dat). 

například mám něco jako (ted sem to vymyslel konkretni priklad nemohu uvest): 

dokument 
 komponenta 
   typauto_login/typ 
   jmenoprihlaseni/jmeno 
   usernamejmeno nekam/username 
   passwdheslo1passwd 
 /komponenta 

 komponenta 
   typauto_login/typ 
   jmenologovani/jmeno 
   usernamejmeno nekam/username 
   passwdheslo1passwd 
  /komponenta 
/dokument 

No a ja nekdy budu menit hodnotu username a password ovsem v zavislosti na 
typu a a nekdy i jmene. 

No chtel bych vas poprosit aby jste mi poradili nejakou komponentu se kterou 
mate zkusenosti ze by zvladla takove xml (1.0 utf8) precist a zas ulozit. 

Ondřej Beránek 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] jak na xml

2008-12-18 Tema obsahu RMiklos
To co doslo do konferencie aj v archive vypada byt ok, ale to co sa mi javi ako 
odoslana posta v Lotuse ma zmrsene odsadenie. 
Takze snad to bol iba plany poplach :-))



-python-boun...@py.cz wrote: -


To: Konference PyCZ python@py.cz
From: rmik...@pss.sk
Sent by: python-boun...@py.cz
Date: 18.12.2008 21:32
Subject: Re: [python] jak na xml


Zda sa ze moj vynikajuci emailovy klient Lotus Notes mi zmrsil odsadenie v 
zdrojakoch, ktore som pred chvilou zaslal. 
Takze dufam, ze aspon prilohy budu ok. 

-python-boun...@py.cz wrote: - 


To: Konference PyCZ python@py.cz 
From: Ondrej Beranek rain...@gmail.com 
Sent by: python-boun...@py.cz 
Date: 18.12.2008 14:13 
Subject: [python] jak na xml 

Ahoj je tomu téměř přesně rok co jsem naposled sáhnul na python. Dneska jsem se 
dostal k tomu že bych znovu potřeboval 
jeho služby. Řeším úlohu jejíž součástí je přečtení XML souboru a změna 
(přesněji přepsání) některých hodnot (dat). 

například mám něco jako (ted sem to vymyslel konkretni priklad nemohu uvest): 

dokument 
 komponenta 
   typauto_login/typ 
   jmenoprihlaseni/jmeno 
   usernamejmeno nekam/username 
   passwdheslo1passwd 
 /komponenta 

 komponenta 
   typauto_login/typ 
   jmenologovani/jmeno 
   usernamejmeno nekam/username 
   passwdheslo1passwd 
  /komponenta 
/dokument 

No a ja nekdy budu menit hodnotu username a password ovsem v zavislosti na 
typu a a nekdy i jmene. 

No chtel bych vas poprosit aby jste mi poradili nejakou komponentu se kterou 
mate zkusenosti ze by zvladla takove xml (1.0 utf8) precist a zas ulozit. 

Ondřej Beránek 
___ 
Python mailing list 
Python@py.cz 
http://www.py.cz/mailman/listinfo/python 


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] jak na xml

2008-12-18 Tema obsahu azurIt
Minimalne mne to doslo ok.

azur


-Pôvodná správa-
Od: [rmik...@pss.sk]
Komu: Konference PyCZ 
Predmet: Re: [python] jak na xml



To co doslo do konferencie aj v archive vypada byt ok, ale to co sa mi javi ako 
odoslana posta v Lotuse ma zmrsene odsadenie. 

Takze snad to bol iba plany poplach :-))





-python-boun...@py.cz wrote: -

To: Konference PyCZ 
From: rmik...@pss.sk
Sent by: python-boun...@py.cz
Date: 18.12.2008 21:32
Subject: Re: [python] jak na xml



Zda sa ze moj vynikajuci emailovy klient Lotus Notes mi zmrsil odsadenie v 
zdrojakoch, ktore som pred chvilou zaslal. 

Takze dufam, ze aspon prilohy budu ok. 


-python-boun...@py.cz wrote: - 

To: Konference PyCZ 
From: Ondrej Beranek 
Sent by: python-boun...@py.cz 
Date: 18.12.2008 14:13 
Subject: [python] jak na xml 

Ahoj je tomu téměř přesně rok co jsem naposled sáhnul na python. Dneska jsem se 
dostal k tomu že bych znovu potřeboval 
jeho služby. Řeším úlohu jejíž součástí je přečtení XML souboru a změna 
(přesněji přepsání) některých hodnot (dat). 

například mám něco jako (ted sem to vymyslel konkretni priklad nemohu uvest): 

 
  
   auto_login 
   prihlaseni 
   jmeno nekam 
   heslo1 
  

  
   auto_login 
   logovani 
   jmeno nekam 
   heslo1 
  
 

No a ja nekdy budu menit hodnotu a ovsem v zavislosti na typu a a nekdy i 
jmene. 

No chtel bych vas poprosit aby jste mi poradili nejakou komponentu se kterou 
mate zkusenosti ze by zvladla takove xml (1.0 utf8) precist a zas ulozit. 

Ondřej Beránek 
___ 
Python mailing list 
Python@py.cz 
http://www.py.cz/mailman/listinfo/python 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python
 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] jak na xml

2008-12-18 Tema obsahu Petr Blahos
 Ahoj je tomu téměř přesně rok co jsem naposled sáhnul na python. Dneska jsem
 se dostal k tomu že bych znovu potřeboval
 jeho služby. Řeším úlohu jejíž součástí je přečtení XML souboru a změna
 (přesněji přepsání) některých hodnot (dat).

Před časem jsem se nechal inspirovat trochu sqlalchemy a trochu Gnosis
Utils (http://freshmeat.net/projects/gnosisxml/) a napsal jsem něco, co
přečte xml a udělá z něj objekt. Vpodstatě to funguje tak, že tagy se
převedou na objekty, a attributy na member variables - jak se to řekne
česky? Bylo to velmi konfigurovatelné a umělo to i zapisovat. Bohužel
to teď není připraveno k release (žádná dokumentace, dlouho jsem na
to nešáhl, neumí to namespaces, není to asi moc rychlé, určitě tam bude
spousta chyb), ale jestli chcete, mohl bych to přes Vánoce zkusit dát
dohromady.
--
Petr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python