当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python xml.etree.ElementTree.Element用法及代码示例


用法:

class xml.etree.ElementTree.Element(tag, attrib={}, **extra)

元素类。该类定义了 Element 接口,并提供了该接口的参考实现。

元素名称、属性名称和属性值可以是字节字符串或 Unicode 字符串。 tag 是元素名称。 attrib 是一个可选字典,包含元素属性。 extra 包含附加属性,作为关键字参数给出。

以下 dictionary-like 方法适用于元素属性。

以下方法适用于元素的子元素(子元素)。

Element 对象还支持以下用于处理子元素的序列类型方法:__delitem__()__getitem__()__setitem__()__len__()

注意:没有子元素的元素将测试为 False 。此行为将在未来版本中更改。请改用特定的len(elem)elem is None 测试。

element = root.find('foo')

if not element:  # careful!
    print("element not found, or element has no subelements")

if element is None:
    print("element not found")

在 Python 3.8 之前,元素的 XML 属性的序列化顺序是通过按属性名称排序来人为地预测的。基于现在保证的 dicts 排序,这种任意重新排序在 Python 3.8 中被删除,以保留属性最初由用户代码解析或创建的顺序。

一般来说,用户代码应该尽量不依赖于特定的属性顺序,因为XML Information Set 明确地排除了传递信息的属性顺序。代码应该准备好处理输入的任何排序。在需要确定性 XML 输出的情况下,例如对于加密签名或测试数据集,canonicalize() 函数可使用规范序列化。

在规范输出不适用但输出仍需要特定属性顺序的情况下,代码应旨在以所需顺序直接创建属性,以避免代码读者感知不匹配。在难以实现的情况下,可以在序列化之前应用如下配方,以独立于元素创建来强制执行订单:

def reorder_attributes(root):
    for el in root.iter():
        attrib = el.attrib
        if len(attrib) > 1:
            # adjust attribute order, e.g. by sorting
            attribs = sorted(attrib.items())
            attrib.clear()
            attrib.update(attribs)

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 xml.etree.ElementTree.Element。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。