Gui*_*rmo 9 xml tostring elementtree python-2.7
我有这个问题,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
Run Code Online (Sandbox Code Playgroud)
该xml.etree.ElementTree.ElementTree
班没有一个tostring
方法.它是xml.etree.ElementTree
模块中的一个功能.
您tostring
已从代码中已存在的模块导入.更改
rough_string = ElementTree.tostring(elem, 'utf-8', method="xml", short_empty_elements=True)
Run Code Online (Sandbox Code Playgroud)
至
rough_string = tostring(elem, 'utf-8', method="xml")
Run Code Online (Sandbox Code Playgroud)
它应该工作.
该short_empty_elements
参数仅在Python 3.4中可用.它在Python 2.7中不起作用.
您导入了错误的东西。tostring
是模块中的函数xml.etree.ElementTree
,而不是 的方法xml.etree.ElementTree.ElementTree
。
归档时间: |
|
查看次数: |
17364 次 |
最近记录: |