ich versuche seit einiger Zeit vergebens einen xml stream welchen ich über tcp empfange sinnvoll mit python weiter zu verarbeiten. Akutell versuche ich ihn mit lxml zu parsen, klappt aber leider nicht.
So siehr mein code aus:
Code: Alles auswählen
import socket
import sys
from lxml import etree
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Bind the socket to the port
server_address = ('localhost', 4000)
print(sys.stderr, 'connecting to %s port %s' % server_address)
sock.connect(server_address)
while 1:
chunk = sock.recv(4096)
print(chunk)
parser = etree.XMLParser(recover=False, remove_blank_text=True)
root = etree.fromstring(chunk, parser=parser)
print(etree.iselement(root))
print(etree.tostring(root))
<Isu_Osis Part="1" version="2.0" Counter="1" IsuCalcFs="3.4.12" Database="11147"><Segment_Running Segment_ID="3"><Action Command="NAM" Current_Participant_ID="392" Current_Start_Number="1" Next_Participant_ID="395" Prev_Participant_ID="" Next_Participant_StNum="2" LastScored_Participant_StNum="1"/></Segment_Running></Isu_Osis>
Traceback (most recent call last):
File "C:/Users/mke/PycharmProjects/xml-reciever/main.py", line 16, in <module>
root = etree.fromstring(chunk, parser=parser)
File "src\lxml\etree.pyx", line 3211, in lxml.etree.fromstring
File "src\lxml\parser.pxi", line 1877, in lxml.etree._parseMemoryDocument
File "src\lxml\parser.pxi", line 1765, in lxml.etree._parseDoc
File "src\lxml\parser.pxi", line 1127, in lxml.etree._BaseParser._parseDoc
File "src\lxml\parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
File "src\lxml\parser.pxi", line 711, in lxml.etree._handleParseResult
File "src\lxml\parser.pxi", line 640, in lxml.etree._raiseParseError
File "<string>", line 1
lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1
Process finished with exit code 1
Kann es sein das da noch ein Steruerzeichen vorne dran ist welche ich erst noch entfernen muss? Wenn ja, wie stelle ich das an?
Danke und Gruß!