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

Я хотел бы закомментировать определенный элемент 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()

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

Ответы [ 2 ]

5 голосов
/ 18 апреля 2011

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

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()
0 голосов
/ 18 апреля 2011

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

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

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