如何删除 XML 中仅包含空格的空 XML 标签?

How to remove empty XML tags, containing whitespace only, in XML?

我需要删除这样的案例:

<text> </text>

我的代码在没有空格时有效,但如果有空格呢?

代码:

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)

我还需要使用 lxml 而不是 BeautifulSoup。

这个 XPath,

//*[not(*)][not(normalize-space())]

将 select 所有只有空白内容的叶元素。

具体针对您的示例,

<root><a>1</a><b><c></c></b><d></d></root>

这些元素将被 selected:cd

对于还包含纯空白元素的示例,

<root>
  <a>1</a>
  <b>
    <c></c>
  </b>
  <d/>
  <e>     </e>
  <f>
  </f>
</root>

这些元素将被 select编辑:cdef