我收到错误消息:“ XMLSyntaxError:标记_io.TextIOWrapper第1行,第1行,列119中的数据过早结束”,我不明白为什么...我检查了XML文件中是否有左方括号但没有...
想法?
非常感谢!
<Motor>
<Materials_database>
<Material name="Steel1">
<CurveProperties>
<Data Temperature="427" Start="2.4e+03" Stop="1.2e+05"></Data>
<Data Temperature="760" Start="1e+03" Stop="2e+05"></Data>
<Data Temperature="871" Start="2.4e+03" Stop="1.2e+05"></Data>
<Data Temperature="982" Start="2.4e+03" Stop="1.2e+05"></Data>
</CurveProperties>
</Material>
</Materials_database>
</Motor>
Python代码:
with open(os.getcwd() + '\\materials.xml', "r" , encoding="utf-8") as dtfile:
temp, start, stop = f.Get_MaterialDatabase(str(dtfile), matName)
功能:
def Get_MaterialDatabase(xml, MaterialName):
Motor = objectify.fromstring(xml)
for mat in Motor.Material_database.iterchildren():
xmlMat = mat.get("name")
print (xmlMat)
if xmlMat == MaterialName:
temp = mat.CurveProperties.get("Temperature")
start = mat.CurveProperties.get("Start")
stop = mat.CurveProperties.get("Stop")
return temp, start, stop
答案 0 :(得分:0)
您首先必须阅读文件Get_MaterialDatabase(str(dtfile.read()), matName)
它是for mat in Motor.Materials_database.iterchildren():
(材料 s )
这些字段位于对象Data
temp = mat.CurveProperties.Data.get("Temperature")
start = mat.CurveProperties.Data.get("Start")
stop = mat.CurveProperties.Data.get("Stop")
您在Data
中有多个CurveProperties
标签,请确保处理Data
标签的列表。
下次遇到此类错误时,请尝试调试器,查看变量的值是什么,或者使用简单的打印语句print('xml=', xml)
从Windows XP开始,您无需在程序代码os.getcwd() + '/materials.xml'