3
我已經用dom生成了一個XML,我想用lxml來打印xml。python lxml與py2exe
這是我的代碼打印這個XML
def prettify_xml(xml_str):
import lxml.etree as etree
root = etree.fromstring(xml_str)
xml_str = etree.tostring(root, pretty_print=True)
return xml_str
我的輸出應該是一個XML格式的字符串。
我從stctoverflow的某篇文章中得到了這段代碼。當我編譯智慧python本身時,這工作完美無瑕。但是,當我在我的項目轉換爲從py2exe創建一個二進制文件(我的二進制是一個namedpipe窗口服務)。我有兩個問題:
我的服務沒有啓動,我在
includes
選項添加lxml.etree
解決了這個在py2exe函數中。然後在我的服務開始正常。XML生成在這裏叫的時候,是我在我的日誌
'module' object has no attribute 'fromstring'
我在哪裏可以糾正這個錯誤我看到的錯誤?我的第一個問題的解決方案是否正確?
我的XML生成代碼:
from xml.etree import ElementTree
from xml.dom import minidom
from xml.etree.ElementTree import Element, SubElement, tostring, XML
import lxml.etree
def prettify_xml(xml_str):
root = lxml.etree.fromstring(xml_str)
xml_str = lxml.etree.tostring(root, pretty_print=True)
return xml_str
def dll_xml(status):
try:
xml_declaration = '<?xml version="1.0" standalone="no" ?>'
rootTagName='response'
root = Element(rootTagName)
root.set('id' , 'rp001')
parent = SubElement(root, 'command', opcode ='-ac')
# Create children
chdtag1Name = 'mode'
chdtag1Value = 'repreport'
chdtag2Name='status'
chdtag2Value = status
fullchildtag1 = ''+chdtag1Name+' value = "'+chdtag1Value+'"'
fullchildtag2=''+chdtag2Name+' value="'+chdtag2Value+'"'
children = XML('''<root><'''+fullchildtag1+''' /><'''+fullchildtag2+'''/></root> ''')
# Add parent
parent.extend(children)
dll_xml_doc = xml_declaration + tostring(root)
dll_xml_doc = prettify_xml(dll_xml_doc)
return dll_xml_doc
except Exception , error:
log.error("xml_generation_failed : %s" % error)
如果您將導入移動到方法定義之外,是否仍然發生?你確定py2exe使用的是你正在測試的python版本嗎? – 2013-02-22 09:38:48
我試着把功能外的導入。我的服務現在沒有開始。我不妨將我的代碼放在 – rakesh 2013-02-22 09:49:28
@ michael-clerx之上,我查閱了我的python版本和py2exe版本,它們都是相同的類型。 – rakesh 2013-02-22 10:39:54