【问题标题】:Python: xml.etree.ElementTree.ParseError: not well-formed (invalid token)Python:xml.etree.ElementTree.ParseError:格式不正确(无效令牌)
【发布时间】:2016-05-04 04:35:38
【问题描述】:

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

# -*- 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)

【问题讨论】:

  • 1. SensorID=extref MessageDate=messagedate 与 XML 文档的属性值一致,必须在 " 中给出,例如 。 dataxml 中缺少此内容。 2. 什么是random.randint(27,40) 表示这将如何在 XML 中工作?
  • random.randint 将返回范围之间的随机值。但是,是的,我知道它必须是字符串。

标签: python xml


【解决方案1】:

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

  1. XML 属性值必须提供到"" 例如&lt;test id="12"&gt;。这是输入 SensorID=extref MessageDate=messagedate 中的缺失
  2. 先计算随机数的值,然后将值添加到字符串以创建完整的标签。
  3. 需要set方法中的字符串,即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)

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 2018-09-25
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多