Разобрать XML и переписать имя файла, используя элемент XML - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь проанализировать XML и переименовать оригинал XML, используя один из его дочерних элементов, в частности в качестве префикса для имени файла XML, который будет перезаписан. В приведенном ниже примере XML я хочу извлечь элемент «to» и вставить его имя «Tove» во вновь записанное имя файла XML. Если исходный файл назывался «напоминание. xml», можно ли проанализировать имя «Tove» и вставить его во вновь записанный файл с именем «Tove_reminder. xml»? Возможно ли это с XML?

`<?xml version="1.0" encoding="ISO-8859-1"?>
-<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>`

Кажется, что Python обладает большей гибкостью при извлечении текста и строк в других форматах файлов, но я не могу найти много, что относится к XML. Любая помощь ценится!

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете использовать beautifulsoup4 для извлечения атрибутов и внутренних текстов документа xml.

сначала установите beautfulsoup4

pip install beautifulsoup4

Затем, предположив, что текст, который вы написали в своем вопросе, загруженный в переменную с именем xml_text, вы можете сделать следующее

from bs4 import BeautifulSoup

file_name = "reminder.xml"
xml_file = open(file_name, 'r')
xml_text = xml_file.read()
xml_file.close()

soup = BeautifulSoup(xml_text, "html.parser")

Чтобы извлечь текст из тега, вы можете затем использовать

to = soup.find("to")
name = to.text #contains Tove now

Наконец, вы можете использовать "имя переменная для сохранения файла

file_name = name + "_" + file_name

xml_file = open(file_name, "w")
xml_file.write(xml_text)
xml_file.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...