Чтобы удалить теги, содержащие определенный subtag в разборе XML с BeautifulSoup - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь проанализировать XML-файл, используя BeautifulSoup в Python. Файл XML такой как:

<x id = '123'>
<b><c>abcd</c>
</b>
</x>
<x id ='456'><z></z>
</x>
<x id ='567'><c>def</c>
</x>

Если какой-либо внешний тег <x> содержит вложенный тег <c>, я хочу удалить весь тег. Как мне это сделать на Python?

1 Ответ

0 голосов
/ 01 мая 2018

Сначала найдите все теги x, используя find_all('x'). Затем, если тег содержит тег <c> (который можно проверить с помощью if x.find('c'):), удалите тег с помощью decompose().

xml = '''
<x id = '123'>
    <b><c>abcd</c></b>
</x>
<x id ='456'>
    <z></z>
</x>
<x id ='567'>
    <c>def</c>
</x>'''
soup = BeautifulSoup(xml, 'html.parser')
for x in soup.find_all('x'):
    if x.find('c'):
        x.decompose()
print(soup)

Выход:

<x id="456">
<z></z>
</x>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...