我有这个问题,,AttributeError: type object 'ElementTree' has no attribute 'tostring'
我不知道怎么了,我导入到字符串,它不起作用。尝试遵循另一个教程,但没有。
有没有其他方法可以将 ElementTree 对象转换为 XML 字符串?
import os
import re
import glob
from xml.dom import minidom
from time import strftime
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element, SubElement, Comment, tostring
date=strftime("%Y-%m-%dT%H:%M:%S")
os.chdir('/home/guillermo/TclsPy/XML_Level2/')
def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
rough_string = ElementTree.tostring(elem, 'utf-8',method="xml" , short_empty_elements=True)
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
for nameXml in glob.glob("*.xml"):
new_nameXml = re.sub(r'tlmy',r'AUX',nameXml,flags=re.IGNORECASE)
new_nameXml = re.sub('.xml','_AlarmEnabled.xml',new_nameXml, flags=re.IGNORECASE)#new_nameXml.lower().replace('.xml','_AlarmEnabled.xml')
match = re.search(r'TSL_TM_TLMY_(.+).xml', nameXml,flags= re.IGNORECASE )
if match:
#Si matchea el patron, guardamos en subsistema lo que esta entre ()
subsistema = match.group(1)
print "Nombre:", new_nameXml
print "Subsistema:", subsistema
else:
print "No matchea:", nameXml
# raw_input()
#<?xml version="1.0" encoding="UTF-8"?>
TSLFunction=Element('TSLFunction')
child = SubElement(TSLFunction, 'unit')
child.text = '<![CDATA[AUX]]>'
child1= SubElement(TSLFunction,'mnemonic')
child1.text='<![CDATA'+'['+'AUX::'+'AUX.'+subsistema.replace('.xml','')+'_AlarmEnabled]]'
child2=SubElement(TSLFunction, 'body')
child2.text='<![CDATA[out = true;]]>'
child3=SubElement(TSLFunction,'description')
child3.text='<![CDATA[--]]>'
child4=SubElement(TSLFunction,'name')
child4.text='<![CDATA['+subsistema+'_AlarmEnabled'+']]'
child5=SubElement(TSLFunction,'minorVersion')
child5.text='0'
child6=SubElement(TSLFunction,'majorVersion')
child6.text='1'
child7=SubElement(TSLFunction,'lastUpdate')
child7.text=date
child8=SubElement(TSLFunction,'creationDate')
child8.text=date
child9=SubElement(TSLFunction,'checked')
child9.text='false'
returnchild=SubElement(TSLFunction,'return')
name=SubElement(returnchild,'name')
name.text='<![CDATA[out]]>'
returnType=SubElement(returnchild,'returnType')
returnType.text='boolean'
label=SubElement(returnchild,'label')
label.text='<![CDATA[--]]>'
parameters=SubElement(TSLFunction,'parameters')
subtype=SubElement(TSLFunction,'subtype')
subtype.text='<![CDATA[TM]]>'
prefix=SubElement(TSLFunction,'prefix')
prefix.text='<![CDATA[AUX]]>'
variable=SubElement(TSLFunction,'variable')
variable.text='<![CDATA['+subsistema +'_AlarmEnabled]]'
print (subsistema)
tree = ElementTree(prettify(TSLFunction))
tree.write('../Alarm/'+new_nameXml)enter code here