2011-02-22 19 views
5

estoy generando cierta XML con lxml y conseguir nodos generados de esta manera:Al usar lxml, ¿se puede representar XML sin atributos de espacio de nombres?

<QBXML xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
py:pytype="TREE"> 

y:

<MaxReturned py:pytype="int"> 

Estos atributos personalizados están matando analizador de QuickBooks. ¿Puedo hacer que LXML renderice sin las cosas personalizadas?

Respuesta

6

tiene el siguiente Cuida de ella:

objectify.deannotate(root, xsi_nil=True) 
etree.cleanup_namespaces(root) 

o, si se utiliza lxml> = 2.3.2 (gracias @Pedru):

objectify.deannotate(root, cleanup_namespaces=True, xsi_nil=True) 
+0

partir de la versión 2.3.2 lxml puede pasar 'cleanup_namespaces = TRUE a' objectify.deannotate() '(sin necesidad de llamar' etree.cleanup_namespaces() ') – Pedru

0

si está usando

etree.fromstring(xml_response) 

continuación, hacer esto:

xml_response.replace(' xmlns:', ' xmlnamespace:').replace(' xmlns=', ' xmlnamespace=') 

evita que los espacios de nombres jamás análisis sintáctico

Cuestiones relacionadas