Python:xml.etree.ElementTree.ParseError:格式不正确(令牌无效) [英] Python: xml.etree.ElementTree.ParseError: not well-formed (invalid token)

查看:27
本文介绍了Python:xml.etree.ElementTree.ParseError:格式不正确(令牌无效)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有给定的示例代码(其中包含一个 xml 变量),我想读取 Xml 的一些属性,然后更新它们.更新后,我想使用 requests.post 发布它们.我收到错误为格式不正确"的标记,并且我无法解析 xml.请提出代码中的错误.

I have the given sample code(which contains an xml variable) and I want to read some of the attributes of the Xml and then update them. Once updated I want to post them using requests.post. I get the error as "not well formed" token, and I am not able to parse the xml. please suggest what is wrong in the code.

# -*- coding: utf-8 -*-
from xml.etree import ElementTree as etree
dataxml = """<APIDataMessage MessageID="747950743" SensorID=extref MessageDate=messagedate State="16" SignalStrength=random.randint(40,70) Voltage="2.83" Battery=random.randint(80,90) Data=random.randint(27,40) DisplayData="67.1° F" PlotValue="67.1" MetNotificationRequirements="False" GatewayID="106558" DataValues="19.5" DataTypes="TemperatureData" PlotValues="67.1" PlotLabels="Fahrenheit" />"""
parser = etree.XMLParser(encoding="utf-8")
root = etree.fromstring(dataxml, parser=parser)
root.set('SignalStrength',100)
print etree.tostring(root)

推荐答案

根据我下面需要在代码中做:

According to me following need to do in code:

  1. XML 属性值必须提供到 "" 中,例如.这是在输入 SensorID=extref MessageDate=messagedate
  2. 中缺失的
  3. 先评估 random 的值,然后将值添加到字符串以创建完整的标记.
  4. set 方法中需要字符串,即 root.set('SignalStrength','100')
  1. XML attribute value must be provided into "" e.g. <test id="12">. This is missng in input SensorID=extref MessageDate=messagedate
  2. Evaluate value of random first and then add value to string to create complete tag.
  3. Need string in set method i.e. root.set('SignalStrength','100')

演示:

dataxml = """<APIDataMessage MessageID="747950743" SensorID="extref"\
 MessageDate="messagedate" State="16" SignalStrength="%s" \
Voltage="2.83" Battery="%s" Data="%s" DisplayData="67.1° F" PlotValue="67.1" \
MetNotificationRequirements="False" GatewayID="106558" DataValues="19.5" \
DataTypes="TemperatureData" PlotValues="67.1" PlotLabels="Fahrenheit" />"""\
%(random.randint(40,70), random.randint(80,90), random.randint(27,40))


from xml.etree import ElementTree as etree
parser = etree.XMLParser(encoding="utf-8")
root = etree.fromstring(dataxml, parser=parser)
root.set('SignalStrength',"100")
print etree.tostring(root)

这篇关于Python:xml.etree.ElementTree.ParseError:格式不正确(令牌无效)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆