【问题标题】:Python Post Request Response Xml Error load fromstringPython Post 请求响应 Xml 错误加载 fromstring
【发布时间】:2020-06-23 19:58:55
【问题描述】:

我确实是 Python 新手,遇到了一些我不确定如何解决的问题能够提供帮助。 我的要求:

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

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

一切都很好,直到我必须在保存数据之前对其进行操作:

例如:

...
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();

在上面我将空值替换为值'N/A'

我收到的错误是:

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

环顾本专栏,我可以看到带有字符 E.G 的文本:SinédÉ 是这里的问题,实际上,当我保存这个 xml 文件并在浏览器中打开时,我会遇到类似的错误或取相同的列缺失 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.

我想知道如何处理包含字符数据的数据 xml 响应?

感谢任何人的帮助!

【问题讨论】:

    标签: python xml xml-parsing


    【解决方案1】:

    挖掘堆栈溢出后找到我的答案:

    我已经修改了:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多