es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

BeautifulSoup elimina elementos que no sean el elemento requerido en un árbol XML.

Estoy usando beautifulsoup para eliminar un elemento del documento xml. Está eliminando la etiqueta requerida pero también está eliminando otra información del documento xml que no está relacionada con ese elemento. ¿Cómo detener esto?

Código para reproducir:

    

import requests
from bs4 import BeautifulSoup

text_file = open('C:\Ashok\sample.xml', 'r')
s = text_file.read()

soup = BeautifulSoup(s, 'xml')
u = soup.find('Version', text='29.2.3')
fed = u.findParent()

fed.decompose()

f = open('C:\Ashok\sample.xml', "w")

f.write(str(soup))
f.close()

Encuentra la comparación adjunta. Se eliminó otra información que se muestra en los rectángulos rojos.

enter image description here

Está actualizando las etiquetas de encabezado y pie de página que no pedí que el código hiciera.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para evitar eliminar otra información del documento XML, puedes intentar especificar la etiqueta o atributo exacto que deseas eliminar utilizando el método extract() en lugar de decompose(). Por ejemplo:

    import requests
    from bs4 import BeautifulSoup
    
    text_file = open('C:\Ashok\sample.xml', 'r')
    s = text_file.read()
    
    soup = BeautifulSoup(s, 'xml')
    u = soup.find('Version', text='29.2.3') # Encuentra el elemento que deseas eliminar
    u.extract() # Elimina solo ese elemento sin afectar otros del documento
    
    f = open('C:\Ashok\sample.xml', "w")
    f.write(str(soup))
    f.close()
    

    En este caso, llamar al método extract() en el elemento u eliminará solo ese elemento específico del documento sin afectar a ningún otro elemento.

Comments are closed.