phi*_*hag 24 python xml dom namespaces
我正在尝试生成带有命名空间的XML文档,目前使用Python的xml.dom.minidom:
import xml.dom.minidom
doc = xml.dom.minidom.Document()
el = doc.createElementNS('http://example.net/ns', 'el')
doc.appendChild(el)
print(doc.toprettyxml())
Run Code Online (Sandbox Code Playgroud)
命名空间被保存(doc.childNodes[0].namespaceURI是'http://example.net/ns'),但为什么输出中缺少它?
<?xml version="1.0" ?>
<el/>
Run Code Online (Sandbox Code Playgroud)
我预计:
<?xml version="1.0" ?>
<el xmlns="http://example.net/ns" />
Run Code Online (Sandbox Code Playgroud)
要么
<?xml version="1.0" ?>
<randomid:el xmlns:randomid="http://example.net/ns" />
Run Code Online (Sandbox Code Playgroud)
Tom*_*lak 21
createElementNS() 定义为:
def createElementNS(self, namespaceURI, qualifiedName):
prefix, localName = _nssplit(qualifiedName)
e = Element(qualifiedName, namespaceURI, prefix)
e.ownerDocument = self
return e
Run Code Online (Sandbox Code Playgroud)
所以…
import xml.dom.minidom
doc = xml.dom.minidom.Document()
el = doc.createElementNS('http://example.net/ns', 'ex:el')
#--------------------------------------------------^^^^^
doc.appendChild(el)
print(doc.toprettyxml())
Run Code Online (Sandbox Code Playgroud)
收益率:
<?xml version="1.0" ?>
<ex:el/>
Run Code Online (Sandbox Code Playgroud)
......不完全......
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())
Run Code Online (Sandbox Code Playgroud)
收益率:
<?xml version="1.0" ?>
<ex:el xmlns:ex="http://example.net/ns"/>
Run Code Online (Sandbox Code Playgroud)
或者:
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())
Run Code Online (Sandbox Code Playgroud)
产生:
<?xml version="1.0" ?>
<el xmlns="http://example.net/ns"/>
Run Code Online (Sandbox Code Playgroud)
看起来你必须手动完成它.Element.writexml()没有迹象表明命名空间会得到任何特殊处理.
编辑:这个答案仅针对目标xml.dom.minidom,因为OP在问题中使用了它.我没有说明通常不可能在Python中使用XML命名空间.;-)
| 归档时间: |
|
| 查看次数: |
9442 次 |
| 最近记录: |