在Python中,如何将xml元素对象转换为具有名称空间前缀的字符串?

在Python中,如何将xml元素对象转换为具有名称空间前缀的字符串?,python,xml,python-3.x,lxml,Python,Xml,Python 3.x,Lxml,我有以下代码: from lxml.etree import tostring, Element, SubElement element = Element('mytag') sub_element = SubElement(element, 'mysubtag') print(tostring(element, pretty_print=True).decode('utf-8')) 这将产生: <mytag> <mysubtag/> </mytag>

我有以下代码:

from lxml.etree import tostring, Element, SubElement
element = Element('mytag')
sub_element = SubElement(element, 'mysubtag')
print(tostring(element, pretty_print=True).decode('utf-8'))
这将产生:

<mytag>
  <mysubtag/>
</mytag>
我应该以何种方式修改它以向每个标记添加名称空间前缀以获得这样的结果:

<mynspref:mytag>
  <mynspref:mysubtag/>
</mynspref:mytag>
使用register_namespace将前缀与命名空间URI关联,并在创建元素时使用该URI

from lxml import etree

NS = "http://www.example.com"
etree.register_namespace("mynspref", NS)

element = etree.Element('{%s}mytag' % NS)
sub_element = etree.SubElement(element, '{%s}mysubtag' % NS)

print(etree.tostring(element, pretty_print=True).decode('utf-8'))
结果:

<mynspref:mytag xmlns:mynspref="http://www.example.com">
  <mynspref:mysubtag/>
</mynspref:mytag>

dexml模块也可能有帮助