0

I'm literally new to Python and I have encounter something that I am not sure how to resolve I'm sure it must be a simple fix but haven't found an solution and hope someone with more knowledge in Python will be able to help. My request:

...
contacts = requests.post(url,data=readContactsXml,headers=headers); 

#print (contacts.content) ;
outF = open("contact.xml", "wb")
outF.write(contacts.content)
outF.close();

all is fine until with the above until I have to manipulate the data before saving it :

E.G:

...
contacts = requests.post(url,data=readContactsXml,headers=headers);


import xml.etree.ElementTree as ET

# contacts.encoding = 'utf-8'
parser = ET.XMLParser(encoding="UTF-8")
tree = ET.fromstring(contacts.content, parser=parser)
root = tree.getroot()
for item in root[0][0].findall('.//fields'):
    if item[0].text == 'maching-text-here':
         if not item[1].text:
              item[1].text = 'N/A'
              print(item[1].text)

#print (contacts.content) ;
outF = open("contact.xml", "wb")
outF.write(contacts.content)
outF.close();

in the above I literally replacing empty value with value 'N/A'

the error that I'm receiving is:

Traceback (most recent call last):
  File "Desktop/PythonTests/test.py", line 107, in <module>
    tree = ET.fromstring(contacts.content, parser=parser)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1311, in XML
    parser.feed(text)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1659, in feed
    self._raiseerror(v)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1523, in _raiseerror
    raise err
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 192300

looking around this column I can see a text with characters E.G: Sinéd, É is a problem here and actually when I just save this xml file and open in the browser I get kind of same error round about give or take the same column missing by 2:

This page contains the following errors:
error on line 1 at column 192298: Encoding error
Below is a rendering of the page up to the first error.

I wonder What I can do with data xml response that contain data with characters ?

Anyone any help Appreciated!

Juliano Vargas
  • 284
  • 2
  • 19

1 Answers1

0

Found my answer after digging stack overflow:

I've modified:

FROM: tree = ET.fromstring(contacts.content, parser=parser)

TO: tree = ElementTree(fromstring(contacts.content))

REF:https://stackoverflow.com/questions/33962620/elementtree-returns-element-instead-of-elementtree/44483259#44483259

Juliano Vargas
  • 284
  • 2
  • 19