[Python-es] POST xml cgi

5 views
Skip to first unread message

FERNANDO VILLARROEL

unread,
May 26, 2012, 7:51:19 PM5/26/12
to pyth...@python.org
Hola amigos.

Quisiera alguna ayuda lo que sucede es que hay un proceso que mediante POST envia un XML a un CGI, entonces en ese CGI debo parsear y extraer ciertos valores para meterlos en una base de datos.
El asunto es que no lo consigo


#!/usr/bin/python

print "Content-type: text/html\n"

import xml.etree.ElementTree as et
import cgi

form = cgi.FieldStorage()
xmlcdr=str(form['cdr'].value)
#xmlc=et.fromstring(xmlcdr)
xmlc=et.parse(xmlcdr)


Este codigo me tira el siguiente error:

[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] File "/usr/lib/cgi-bin/cdr.py", line 15, in <module>
[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] xmlc=et.parse(xmlcdr)
[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 862, in parse
[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] tree.parse(source, parser)
[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 579, in parse
[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] source = open(source, "rb")
[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] IOError
[Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] : [Errno 36] File name too long: '<?xml version="1.0"?>

Alguna idea o sugerencia que me ayude.

Fernando
_______________________________________________
Python-es mailing list
Pyth...@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Luis Miguel Morillas

unread,
May 27, 2012, 3:30:31 AM5/27/12
to La lista de python en castellano
El día 27 de mayo de 2012 01:51, FERNANDO VILLARROEL
<fvill...@yahoo.com> escribió:
> Hola amigos.
>
> Quisiera alguna ayuda lo que sucede es que hay un proceso que mediante POST envia un XML a un CGI, entonces en ese CGI debo parsear y extraer ciertos valores para meterlos en una base de datos.
> El asunto es que no lo consigo
>
>
> #!/usr/bin/python
>
> print "Content-type: text/html\n"
>
> import xml.etree.ElementTree as et
> import cgi
>
> form = cgi.FieldStorage()
> xmlcdr=str(form['cdr'].value)
> #xmlc=et.fromstring(xmlcdr)
> xmlc=et.parse(xmlcdr)
>
>
> Este codigo me tira el siguiente error:
>
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1]   File "/usr/lib/cgi-bin/cdr.py", line 15, in <module>
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1]     xmlc=et.parse(xmlcdr)
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1]   File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 862, in parse
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1]     tree.parse(source, parser)
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1]   File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 579, in parse
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1]     source = open(source, "rb")
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] IOError
> [Sat May 26 11:30:55 2012] [error] [client 127.0.0.1] : [Errno 36] File name too long: '<?xml version="1.0"?>
>
> Alguna idea o sugerencia que me ayude.
>

No uso ET, pero qué quieres pasar, una cadena XML o la ruta de un
fichero? El CGI recibe una cadena. Si pasas la cadena, tendrás que
usara el et.fromstring() que tienes comentado, no?


-- lm

Sergio Fernández

unread,
May 27, 2012, 7:43:54 AM5/27/12
to La lista de python en castellano
parse() parsea un fichero, por lo tanto espera una ruta

en su lugar debieras utilizar fromstring()

http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.fromstring

2012/5/27 FERNANDO VILLARROEL <fvill...@yahoo.com>:
--

Sergio Fernández <ser...@wikier.org>
Reply all
Reply to author
Forward
0 new messages