Как указать lxml.etree.tostring (element) не записывать пространства имен в python?

У меня есть огромный файл xml (1 гигабайт). Я хочу переместить некоторые элементы (записи) в другой файл с тем же заголовком и спецификациями.

Допустим, исходный файл содержит эту запись с тегом :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE some SYSTEM "some.dtd">
<some>
...
<to_move date="somedate">
    <child>some text</child>
    ...
...
</to_move>
...
</some>

Я использую lxml .etree.iterparse для перебора файла. Работает отлично. Когда я нахожу элемент с тегом , предположим, что он хранится в переменной element Я знаю

new_file.write(etree.tostring(element))

Но это приводит к

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE some SYSTEM "some.dtd">
<some>
...
<to_move xmlns:="some" date="somedate">  # <---- Here is the problem. I don't want the namespace.
    <child>some text</child>
    ...
...
</to_move>
...
</some>

Итак, вопрос: как указать etree.tostring () не писать xmlns: = "some" . Это возможно? Я возился с api-документацией lxml.etree, но не смог найти удовлетворительного ответа.

Это то, что я нашел для etree.trostring :

tostring(element_or_tree, encoding=None, method="xml",
xml_declaration=None, pretty_print=False, with_tail=True,
standalone=None, doctype=None, exclusive=False, with_comments=True)

Сериализуйте элемент в закодированный строковое представление своего XML tree.

Мне кажется, что каждый из параметров tostring () не помогает. Есть предложения или исправления?

8
задан Aufwind 9 August 2011 в 23:20
поделиться