Как закомментировать XML-элемент (используя реализацию minidom DOM)

#python #xml #minidom

#python #xml #minidom

Вопрос:

Я хотел бы закомментировать конкретный XML-элемент в XML-файле. Я мог бы просто удалить элемент, но я бы предпочел оставить его закомментированным, на случай, если это понадобится позже.

Код, который я использую в данный момент для удаления элемента, выглядит следующим образом:

 from xml.dom import minidom

doc = minidom.parse(myXmlFile)
for element in doc.getElementsByTagName('MyElementName'):
if element.getAttribute('name') in ['AttribName1', 'AttribName2']:
    element.parentNode.removeChild(element)
f = open(myXmlFile, "w")
f.write(doc.toxml())
f.close()
  

Я хотел бы изменить это так, чтобы он комментировал элемент, а не удалял его.

Ответ №1:

Следующее решение делает именно то, что я хочу.

 from xml.dom import minidom

doc = minidom.parse(myXmlFile)
for element in doc.getElementsByTagName('MyElementName'):
    if element.getAttribute('name') in ['AttrName1', 'AttrName2']:
        parentNode = element.parentNode
        parentNode.insertBefore(doc.createComment(element.toxml()), element)
        parentNode.removeChild(element)
f = open(myXmlFile, "w")
f.write(doc.toxml())
f.close()
  

Ответ №2:

Вы можете сделать это с помощью BeautifulSoup. Прочитайте целевой тег, создайте соответствующий тег комментария и замените целевой тег

Например, создание тега комментария:

 from BeautifulSoup import BeautifulSoup
hello = "<!--Comment tag-->"
commentSoup = BeautifulSoup(hello)