Ознакомьтесь с разделом учебника lxml по пространствам имен . Также эта статья о пространствах имен в ElementTree .
Проблема 1: мириться с этим, как и все остальные. Вместо "%(ns)Event" % {'ns':NS }
попробуйте NS+"Event"
.
Проблема 2: По умолчанию декларация XML записывается, только если она требуется. Вы можете форсировать его (только lxml), используя xml_declaration=True
в своем вызове write()
.
Проблема 3: Аргумент nsmap
выглядит только для lxml. AFAICT это нужно MAPping, а не строка. Попробуйте nsmap={None: NS}
. В статье effbot есть раздел, описывающий обходной путь для этого.