createElementNS()
è definito come:
def createElementNS(self, namespaceURI, qualifiedName):
prefix, localName = _nssplit(qualifiedName)
e = Element(qualifiedName, namespaceURI, prefix)
e.ownerDocument = self
return e
così ...
0.123.
import xml.dom.minidom
doc = xml.dom.minidom.Document()
el = doc.createElementNS('http://example.net/ns', 'ex:el')
#--------------------------------------------------^^^^^
doc.appendChild(el)
print(doc.toprettyxml())
rendimenti:
<?xml version="1.0" ?>
<ex:el/>
... non del tutto lì ...
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())
rendimenti:
<?xml version="1.0" ?>
<ex:el xmlns:ex="http://example.net/ns"/>
in alternativa:
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())
Wich produce:
<?xml version="1.0" ?>
<el xmlns="http://example.net/ns"/>
Sembra che dovreste farlo manualmente. Element.writexml()
non indica che gli spazi dei nomi otterrebbero un trattamento speciale.
MODIFICA: questa risposta è indirizzata solo a xml.dom.minidom
, poiché l'OP lo ha utilizzato nella domanda. Non indico che fosse impossibile usare gli spazi dei nomi XML in Python in generale. ;-)
Questo funziona, ma è piuttosto un hack. Non riesco a ricordare nessun'altra implementazione DOM in grado di riconoscere lo spazio dei nomi che non supporta gli spazi dei nomi. Spero che ce ne sia uno anche per Python. – phihag
Stavo cercando un codice sorgente per minidom, e sembra che questo trucco sia il più vicino possibile. Il supporto "output" per gli spazi dei nomi in minidom è praticamente inesistente (AFAICS), non ricevono alcun trattamento speciale. Tuttavia vengono analizzati correttamente, quindi quando sono nella stringa di input, saranno anche nell'output. Oltre a questo minidom li tratta come normali attributi ed elementi con nomi divertenti. – Tomalak