我试图创建简单的SVG (XML)文件,如下所示:
root = etree.Element('{http://www.w3.org/2000/svg}svg')
root.append(element) # element is a <path> element extracted from another SVG file
print(etree.tostring(root).decode())
但这给出了如下的输出:
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg"><ns0:path ...></ns0:path></ns0:svg>
这个输出几乎是正确的,但是如何摆脱它似乎是随机添加的ns0:
命名空间呢?预期产出如下:
<svg xmlns="http://www.w3.org/2000/svg"><path ...></path></svg>
我试过使用nsmap
,如下所示,但这会引发ValueError: Invalid namespace prefix ''
root = etree.Element('{http://www.w3.org/2000/svg}svg', nsmap={'': 'http://www.w3.org/2000/svg'})
# ...
This answer非常接近,但它删除了名称空间前缀,并将名称空间作为名称空间(我并不真正想要的名称空间)--我希望删除名称空间前缀,但保留名称空间(因为它不会是一个没有名称空间的有效SVG )。
发布于 2021-05-16 09:26:52
你离我很近。在nsmap=
中,而不是''
中,使用None
root = etree.Element('{http://www.w3.org/2000/svg}svg', nsmap={None: 'http://www.w3.org/2000/svg'})
root.append(element) # element is a <path> element extracted from another SVG file
print(etree.tostring(root).decode())
这将保留名称空间,但不会添加任何名称空间前缀(即ns0
)。
https://stackoverflow.com/questions/67554980
复制相似问题