У меня есть XML в локальном файле, который является шаблоном для окончательного сообщения, которое получает POST
ed в службу REST
. Сценарий предварительно обрабатывает данные шаблона до его публикации.Как заменить/удалить XML-тег с помощью BeautifulSoup?
Так что шаблон выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<singleElement>
<subElementX>XYZ</subElementX>
</singleElement>
<repeatingElement id="11" name="Joe"/>
<repeatingElement id="12" name="Mary"/>
</root>
сообщение XML должен выглядеть такой же, за исключением того, что repeatingElement
теги должны быть заменены чем-то другим (XML генерируется с помощью сценария на основе атрибутов в существующий тег).
Вот мой сценарий до сих пор:
xmlData = None
with open('conf//test1.xml', 'r') as xmlFile:
xmlData = xmlFile.read()
xmlSoup = BeautifulSoup(xmlData, 'html.parser')
repElemList = xmlSoup.find_all('repeatingelement')
for repElem in repElemList:
print("Processing repElem...")
repElemID = repElem.get('id')
repElemName = repElem.get('name')
# now I do something with repElemID and repElemName
# and no longer need it. I would like to replace it with <somenewtag/>
# and dump what is in the soup object back into a string.
# is it possible with BeautifulSoup?
Могу ли я заменить повторяющиеся элементы с чем-то другим, а затем сбросить объект суп в новую строку, я могу отправлять сообщения в REST API?
Примечание: Я использую html.parser
, потому что я can't get the xml parser to work, но это работает хорошо, понимание HTML является более снисходительным, чем XML разбор.
смешно, я просто придумал одно и то же решение – amphibient
К сожалению, единственным парсером супа, который работает в моей системе (Win7), является 'html.parser' (xml не работает согласно http://stackoverflow.com/ Вопросы/40640026/how-to-install-module-for-beautifulsoup-xml-parsing? noredirect = 1 # comment68512605_40640026) преобразует все теги в нижний регистр, а мой REST API чувствителен к регистру – amphibient