0

我是 python 的新手,使用 3.x,并且遇到了我正在测试/学习的 XML 文件的问题。当我查看原始文件(顺便说一句,它是 ASCII 编码的)时,问题(我很确定)是那里有一个 U+00A0 代码。

XML如下:

<?xml version="1.0" encoding="utf-8"?>
<XMLSetData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.clientsite.com/subdir/r2.4/v1">
  <FileCreationDate>2018-05-05T11:35:44.1043858-05:00</FileCreationDate>
  <XMLSetDataList>
    <DataIDNumber>99345346</DataIDNumber>
    <DataName>RSRS TVL5697 ULL  Georgetown</DataName>
  </XMLSetDataList>
</XMLSetData>

使用记事本++,它显示文本在 ULL 和 Georgetown 之间有“xA0”而不是“”(两个空格)。因此,当我执行以下代码时:

import xml.etree.ElementTree as ET    
events = ("end", "start-ns", "end-ns")

for event, elem in ET.iterparse(xml_file, events=events):
        if event == "end":
            eltag = elem.tag
            eltext = elem.text
            print( eltag, eltext)

它给了我一个错误说明:

  File "C:\Users\d\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 1222, in iterator
    yield from pullparser.read_events()
  File "C:\Users\d\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 1297, in read_events
    raise event
  File "C:\Users\d\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 1269, in feed
    self._parser.feed(data)
  File "<string>", line None
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 6, column 30

我该如何解决这个问题/解决它?如果我删除 xA0 部分,它解析得很好,但显然这样的事情可能会再次出现,我想以编程方式处理它。

4

0 回答 0