如何删除 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:c
和 d
。
对于还包含纯空白元素的示例,
<root>
<a>1</a>
<b>
<c></c>
</b>
<d/>
<e> </e>
<f>
</f>
</root>
这些元素将被 select编辑:c
、d
、e
和 f
。
我需要删除这样的案例:
<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:c
和 d
。
对于还包含纯空白元素的示例,
<root>
<a>1</a>
<b>
<c></c>
</b>
<d/>
<e> </e>
<f>
</f>
</root>
这些元素将被 select编辑:c
、d
、e
和 f
。