createElementNS() определяется как:
def createElementNS(self, namespaceURI, qualifiedName):
prefix, localName = _nssplit(qualifiedName)
e = Element(qualifiedName, namespaceURI, prefix)
e.ownerDocument = self
return e
so…
import xml.dom.minidom
doc = xml.dom.minidom.Document()
el = doc.createElementNS('http://example.net/ns', 'ex:el')
#--------------------------------------------------^^^^^
doc.appendChild(el)
print(doc.toprettyxml())
дает:
<?xml version="1.0" ?>
<ex:el/>
…не совсем там…
import xml.dom.minidom
doc = xml.dom.minidom.Document()
el = doc.createElementNS('http://example.net/ns', 'ex:el')
el.setAttribute("xmlns:ex", "http://example.net/ns")
doc.appendChild(el)
print(doc.toprettyxml())
дает:
<?xml version="1.0" ?>
<ex:el xmlns:ex="http://example.net/ns"/>
альтернативно:
import xml.dom.minidom
doc = xml.dom.minidom.Document()
el = doc.createElementNS('http://example.net/ns', 'el')
el.setAttribute("xmlns", "http://example.net/ns")
doc.appendChild(el)
print(doc.toprettyxml())
который производит:
<?xml version="1.0" ?>
<el xmlns="http://example.net/ns"/>
Похоже, вам придется делать это вручную. Element.writexml() не показывает никаких указаний на то, что пространства имен получат какую-либо особую обработку.
РЕДАКТИРОВАТЬ: этот ответ предназначен только для xml.dom.minidom, поскольку ОП использовал его в вопросе. Я не указываю, что в Python вообще нельзя было использовать пространства имен XML. ;-)
person
Tomalak
schedule
14.05.2009