我有一些由可能有也可能没有空元素的脚本生成的 XML。有人告诉我,现在 XML 中不能有空元素。这是一个例子:
<customer>
<govId>
<id>@</id>
<idType>SSN</idType>
<issueDate/>
<expireDate/>
<dob/>
<state/>
<county/>
<country/>
</govId>
<govId>
<id/>
<idType/>
<issueDate/>
<expireDate/>
<dob/>
<state/>
<county/>
<country/>
</govId>
</customer>
输出应如下所示:
<customer>
<govId>
<id>@</id>
<idType>SSN</idType>
</govId>
</customer>
我需要删除所有空元素。您会注意到,我的代码取出了“govId”子元素中的空白内容,但第二次没有取出任何内容。我目前正在使用 lxml.objectify。
这基本上是我正在做的事情:
root = objectify.fromstring(xml)
for customer in root.customers.iterchildren():
for e in customer.govId.iterchildren():
if not e.text:
customer.govId.remove(e)
有谁知道用 lxml objectify 做到这一点的方法,还是有更简单的方法?如果它的所有元素都是空的,我还想完全删除第二个“govId”元素。