Python远程打开XML以进行读取和解析

时间:2016-08-23 15:43:47

标签: python xml parsing

我试图远程打开一个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

1 个答案:

答案 0 :(得分:0)

示例文件中的前两个字节是Unicode Byte Order Marker,表示文件编码为UTF-8。

似乎lxml绊倒了。只需关闭前两个字节,lxml无论如何都会从Doctype声明中检测到正确的编码。

root = ET.fromstring(x[3:])