XML-Parser will nicht parsen
Verfasst: Samstag 13. September 2008, 01:01
Hallo.
Ich meine zwar mein Problem liegt eher am XMLRPC-Modul, aber da ich die erhaltene XML-Nachricht jetzt auslesen (parsen?) will schreibe ich mal hier rein.
Mein XMLRPC-Server:
bekommt diese XML:
<?xml version="1.0" encoding="iso-8859-1" ?>
- <reg_publish_message>
- <message_mod_1>
<modul1_ip>131.188.113.139</modul1_ip>
<modul1_port>8889</modul1_port>
<modul1_name>schrauber</modul1_name>
<modul1_need>torque</modul1_need>
<modul1_give>force</modul1_give>
</message_mod_1>
</reg_publish_message>
Beim versuch das Modul xml_parse.xml_read(xml_message_1) mit der Nachricht aufzurufen meldet er mir folgendes:
Traceback (most recent call last):
File "modul_1.py", line 47, in <module>
st.modul_1()
File "modul_1.py", line 34, in modul_1
server.mod_1(xml_message)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1147, in __call__
return self.__send(self.__name, args)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1437, in __request
verbose=self.__verbose
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1201, in request
return self._parse_response(h.getfile(), sock)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1340, in _parse_response
return u.close()
File "C:\Programme\Python25\lib\xmlrpclib.py", line 787, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: '<type \'exceptions.IOError\'>:[Errno 2] No such file or directory: \'<?xml version="1.0" encoding="iso-8859-1"?>\\n<reg_publish_message>\\.
Die Funktion xml_read(data) funktioniert wenn man die XML direkt übergibt, bloss will der RPC nicht.
Ich weiß nicht mehr weiter, wäre schön wenn jemand mir helfen könnte.
Vielen dank.
Ich meine zwar mein Problem liegt eher am XMLRPC-Modul, aber da ich die erhaltene XML-Nachricht jetzt auslesen (parsen?) will schreibe ich mal hier rein.
Mein XMLRPC-Server:
Code: Alles auswählen
from SimpleXMLRPCServer import SimpleXMLRPCServer
from threading import Thread
import socket
socket.setdefaulttimeout(3) # Timeout auf 3 sec. setzen
import xmlrpclib
import sys, os, time
import xml_parse
#import create_xml
class XmlrpcHandler:
def mod_1 (self, xml_message_1):
# XML lesen und eine Adresse ('http//IP:Port') konstruieren
data = open ('message_1.xml', 'w')
data.write (xml_message_1)
data.close()
ip = xml_parse.xml_read(xml_message_1)
print ip
print xml_message_1
return xml_message_1
server = SimpleXMLRPCServer(("0.0.0.0", 50505), allow_none=True)
server.register_instance(XmlrpcHandler())
print "Der XMLRPC-Server horcht auf http://0.0.0.0:50505."
print "Er kann mit STRG+C beendet werden."
server.serve_forever()
<?xml version="1.0" encoding="iso-8859-1" ?>
- <reg_publish_message>
- <message_mod_1>
<modul1_ip>131.188.113.139</modul1_ip>
<modul1_port>8889</modul1_port>
<modul1_name>schrauber</modul1_name>
<modul1_need>torque</modul1_need>
<modul1_give>force</modul1_give>
</message_mod_1>
</reg_publish_message>
Beim versuch das Modul xml_parse.xml_read(xml_message_1) mit der Nachricht aufzurufen meldet er mir folgendes:
Traceback (most recent call last):
File "modul_1.py", line 47, in <module>
st.modul_1()
File "modul_1.py", line 34, in modul_1
server.mod_1(xml_message)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1147, in __call__
return self.__send(self.__name, args)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1437, in __request
verbose=self.__verbose
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1201, in request
return self._parse_response(h.getfile(), sock)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1340, in _parse_response
return u.close()
File "C:\Programme\Python25\lib\xmlrpclib.py", line 787, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: '<type \'exceptions.IOError\'>:[Errno 2] No such file or directory: \'<?xml version="1.0" encoding="iso-8859-1"?>\\n<reg_publish_message>\\.
Die Funktion xml_read(data) funktioniert wenn man die XML direkt übergibt, bloss will der RPC nicht.
Ich weiß nicht mehr weiter, wäre schön wenn jemand mir helfen könnte.
Vielen dank.
