Подтвердить что ты не робот

Создание документа SVG/XML без пространства имен ns0 с использованием Python ElementTree

Я строю документ SVG с ElementTree в Python 2.7. Вот код:

from xml.etree import ElementTree as etree

root = etree.XML('<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>')
root.append(etree.Element("path"))
root[0].set("d", "M1 1 L2 2 Z")
print etree.tostring(root, encoding='iso-8859-1')

Это генерирует вывод:

<?xml version='1.0' encoding='iso-8859-1'?>
<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" height="100%" version="1.1" width="100%"><path d="M1 1 L2 2 Z" /></ns0:svg>

Это не анализируется как действительный SVG. Как удалить пространство имен ns0?

4b9b3361

Ответ 1

Я только что понял это, и я не могу удалить вопрос, так вот:

etree.register_namespace("","http://www.w3.org/2000/svg")

Я думаю, что это работает только с Python 2.7.

Ответ 2

Вот как я это делаю с lxml.

from lxml import etree
svg_tree = etree.fromstring(svg_str, parser=etree.XMLParser())
etree.tostring(svg_tree)

Используемый образец кода отсюда: lxml-removing-xml-tags-when-parsing