У меня есть огромный файл 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 ()
не помогает. Есть предложения или исправления?