till ett Python script. Tänkte används ElementTree och funktionen fromstring.
Miljö:
$ python
Python 2.7.8 (default, Oct 31 2014, 14:12:12) [DECC] on OpenVMS
Type "help", "copyright", "credits" or "license" for more information.
>>>
Har en 2.7.18 tillgänglig, men jag ser inte att ElementTree skulle bete sig annorlunda.
Det är samma version av ElementTree i båda...
Tree i båda Python versionerna.
Ungefär så här med lite rensad kod:
Kod: Markera allt
import xml.etree.ElementTree as ET
message = queue.get(None, md, gmo)
root = ET.fromstring(message)
Problemet är att det förekommer speciella tecken kodade som UTF-8 i XML strukturen (som värden, inte som taggar).
Fromstring smäller av med:
Kod: Markera allt
Traceback (most recent call last):
File "<stdin>", line 28, in <module>
File "/python_root/lib/xml/etree/ElementTree.py", line 1300, in XML
parser.feed(text)
File "/python_root/lib/xml/etree/ElementTree.py", line 1642, in feed
self._raiseerror(v)
File "/python_root/lib/xml/etree/ElementTree.py", line 1506, in _raiseerror
raise err
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 431, column 96
Jag ser två vägar:
1. Köra en find/replace på hela "message" och ersätta UTF-8 koderna med valfritt ASCII tecken.
2. Få till det så att ElementTree kan hantera det även med UTF-8 som värden i XML strukturen.
Skulle gärna behålla UTF-8 för att få korrekta benämningar på prylarna i olika länder.
Så, tänkte om det fanns någon Python-hacker här som har en idé?
Syftet är alltså att plocka vissa data från XML strukturen (är en nerladdning från ett centralt
system för artikelinformation) och lägga det som är intressant i våran lokala databas. Är inte
intresserad av XML som sådan, bara att få tag på relevant data.
Det finns ett par andra XML vertyg som BeautifulSoup, libxml2, lxml, och PySimpleXML
ifall någon känner igen någon av dessa och tror/vet att den skulle fungera bättre.