问题是否包含utf-16编码的xml文件?

问题描述 投票:0回答:1

我正在处理一些我想用python解析的xml文件。为此,我尝试使用模块import lxml.etree as etreeimport xml.etree.ElementTree as ET中的一个,但同时出现问题。使用lxml.etree代码:

import lxml.etree as etree
parser = etree.XMLParser(encoding='utf-16')
tree = etree.parse(xml_file, parser)

在解析时给出以下错误:

lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1

使用模块xml.etree.ElementTree as ET

parser = ET.XMLParser(encoding="utf-16")
tree = ET.parse(xml_file)

出现以下错误:

xml.etree.ElementTree.ParseError: encoding specified in XML declaration is incorrect: line 1, column 30

我正在处理非常复杂的文件,但是可以在较小的文件上重现:

<?xml version="1.0" encoding="UTF-16"?>
<OrderMessage version="9.0" type="Add"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.sthg.com/sthg/sthg/2019/03">
<Example>test</Example>
</OrderMessage>

另外,我有时观察到的是,对于某些文件,解析是可以的,但是标记完全被弄乱了。您可以解决这个问题吗?

python xml-parsing lxml elementtree
1个回答
0
投票

我不知道以下代码是否可以解决您的问题。您可以尝试,如果可行,我们可以传达下一个需求。

from simplified_scrapy import SimplifiedDoc,req,utils

# html = utils.getFileContent(xml_file,encoding="utf-16") # Replace with your real XML file
html = '''
<?xml version="1.0" encoding="UTF-16"?>
<OrderMessage version="9.0" type="Add"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.sthg.com/sthg/sthg/2019/03">
<Example>test</Example>
</OrderMessage>
'''
doc = SimplifiedDoc(html)
print (doc.Example.text)

结果:

test
© www.soinside.com 2019 - 2024. All rights reserved.