Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:xml.etree.ElementTree.ParseError:格式不正确(无效令牌)_Python_Xml - Fatal编程技术网

Python:xml.etree.ElementTree.ParseError:格式不正确(无效令牌)

Python:xml.etree.ElementTree.ParseError:格式不正确(无效令牌),python,xml,Python,Xml,我有给定的示例代码(其中包含一个xml变量),我想读取xml的一些属性,然后更新它们。更新后,我想使用requests.post发布它们。 我得到的错误是“格式不正确”的标记,我无法解析xml。 请指出代码中的错误 # -*- coding: utf-8 -*- from xml.etree import ElementTree as etree dataxml = """<APIDataMessage MessageID="747950743" SensorID=extref Messa

我有给定的示例代码(其中包含一个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)
#-*-编码:utf-8-*-
从xml.etree导入ElementTree作为etree
数据XML=“”
parser=etree.XMLParser(encoding=“utf-8”)
root=etree.fromstring(dataxml,parser=parser)
root.set('SignalStrength',100)
打印etree.tostring(根目录)

根据我的要求,需要在代码中执行以下操作:

  • XML属性值必须提供到
    中,例如
    。这是输入中的错误
    SensorID=extref MessageDate=MessageDate
  • 首先计算random的值,然后将值添加到字符串以创建完整的标记
  • 需要
    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)
    
    dataxml=“”\
    %(random.randint(40,70),random.randint(80,90),random.randint(27,40))
    从xml.etree导入ElementTree作为etree
    parser=etree.XMLParser(encoding=“utf-8”)
    root=etree.fromstring(dataxml,parser=parser)
    root.set('SignalStrength',“100”)
    打印etree.tostring(根目录)
    
    1
    SensorID=extref MessageDate=MessageDate
    accornf to XML文档属性值必须在
    中给出。例如,
    dataxml
    中缺少此属性值。2.
    random.randint(27,40)是什么
    表示这在XML中如何工作?random.randint将返回一个介于范围之间的随机值。但我知道它必须是字符串。