Я пытаюсь открыть действительный XML-файл, разобрать его с помощью lxml-xml
, предварительно откорректировать и, наконец, сохранить в другом файле.
Мой код выглядит следующим образом:
def main(path_to_config):
with open(f'configs/{path_to_config}', 'r') as file:
contents = file.read()
soup = BeautifulSoup(contents, 'xml')
with open(f'pretty_xml/{path_to_config.split("_")[0]}.xml', 'w') as new_file:
new_file.write(soup.prettify())
К сожалению, независимо от того, что помещено в файл, анализ не будет генерировать действительный xml. Одна строка <?xml version="1.0" encoding="utf-8"?>
- это все, что сохраняется в файлах pretty_config/
. Я проверил с помощью нескольких онлайн-валидаторов, что передаваемый мною xml действителен.
Я попытался заменить file.read()
только файлом, не повезло. Я также попытался заменить это просто строкой xml, которая работает и проверяет, работает ли мой синтаксический анализатор и происходит ли разрыв между открытием файла и передачей содержимого в BeautifulSoup
.
Любая помощь в этом будеточень ценится.
ОБНОВЛЕНИЕ:
Мой xml-файл состоит из одной строки, <note><time>twelve</time></note>
.
В качестве проверки работоспособности я добавил assert contents == '<note><time>twelve</time></note>'
, как при передаче строки в BeautifulSoup
у парсера проблем нет. Эта новая строка выкинула AssertionError
, что я совершенно не знаю, как. Разве строки не должны быть идентичными? Я скопировал строку из файла .py прямо в файл .xml, никаких дополнительных пробелов и других символов нет.