AttributeError:类型对象'ElementTree'没有属性'tostring'

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)

mzj*_*zjn 8

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中不起作用.


Woo*_*ble 2

您导入了错误的东西。tostring是模块中的函数xml.etree.ElementTree,而不是 的方法xml.etree.ElementTree.ElementTree