python lxml con py2exe
xml-parsing (1)
Intenta usar PyInstaller en lugar de py2exe. python pyinstaller.py YourPath/xml_a.py
tu programa a .exe binario sin problemas simplemente ejecutando python pyinstaller.py YourPath/xml_a.py
.
He generado un XML con dom y quiero usar lxml para imprimir bastante el xml.
este es mi código para imprimir bastante el 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
mi salida debe ser una cadena con formato xml.
Obtuve este código de alguna publicación en stactoverflow. Esto funciona sin problemas cuando estoy compilando con python. Pero cuando convierto mi proyecto a un binario creado a partir de py2exe (mi binario es el servicio de Windows con un namedpipe). Tuve dos problemas:
Mi servicio no estaba comenzando, lo resolví añadiendo
lxml.etree
en la opciónincludes
en py2exe. luego, mi servicio comenzó correctamente.cuando la generación xml en aquí se llama, el error que estoy viendo en mi log
''module'' object has no attribute ''fromstring''
¿Dónde rectifico este error? ¿Y la solución de mi primer problema es correcta?
mi código de generación 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)