我试图远程打开一个xml文件进行读取和解析,但在我尝试使用它时遇到错误。当我打印时,它也会以一些无法识别的字符开头。能帮我指点正确的方向,以便我可以远程打开xml文件并解析数据吗?
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Data.xsl"?>
<abc>
<md>
<mi>
<datetime>20160822020003</datetime>
<period>3600</period>
<it>Item_No_1</it>
<it>Item_No_2</it>
<it>Item_No_3</it>
<it>Item_No_4</it>
<it>Item_No_5</it>
<it>Item_No_6</it>
<it>Item_No_7</it>
<ovalue>
<v>1111111111</v>
<v>2222222222</v>
<v>3333333333</v>
<v>4444444444</v>
<v>5555555555</v>
<v>6666666666</v>
<v>7777777777</v>
</ovalue>
</mi>
</md>
</abc>
代码:
import xml.etree.ElementTree as ET
with open('test.xml') as f:
for line in f:
x = line
print(x, end='')
root = ET.fromstring(x)
print(root.tag)
错误:
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 1
答案 0 :(得分:0)
示例文件中的前两个字节是Unicode Byte Order Marker,表示文件编码为UTF-8。
似乎lxml绊倒了。只需关闭前两个字节,lxml无论如何都会从Doctype声明中检测到正确的编码。
root = ET.fromstring(x[3:])