删除空的xml节点

时间:2015-08-05 21:00:28

标签: python

我有一个xml文件,我试图用python删除空节点。当我对它进行测试以检查该值是否为“鲨鱼”时,它可以正常工作。但是当我检查它是否为空时,它不会删除空节点。

for records in recordList:
        for fieldGroup in records:
            for field in fieldGroup:
                if field.text is None:
                    fieldGroup.remove(field)

1 个答案:

答案 0 :(得分:0)

是你的朋友。

from lxml import etree

doc = etree.XML("""<root><a>1</a><b><c></c></b><d></d></root>""")

def remove_empty_elements(doc):
  for element in doc.xpath('//*[not(node())]'):
    element.getparent().remove(element)

然后:

>>> print etree.tostring(doc,pretty_print=True)
<root>
  <a>1</a>
  <b>
    <c/>
  </b>
  <d/>
</root>

>>> remove_empty_elements(doc)
>>> print etree.tostring(doc,pretty_print=True)
<root>
  <a>1</a>
  <b/>
</root>

>>> remove_empty_elements(doc)
>>> print etree.tostring(doc,pretty_print=True)
<root>
  <a>1</a>
</root>