美文网首页
xml ElementTree

xml ElementTree

作者: xncode | 来源:发表于2019-03-21 17:05 被阅读0次

    xml.etree.ElementTree

    通过ElementTree代表整个xml文档树,通过Element来代表一个节点,对整个xml文档的操作例如读写文件的操作使用ElementTree,对于一个元素和子元素的操作使用Element

    import xml.etree.ElementTree as ET
    tree = ET.parse('country_data.xml')
    root = tree.getroot()
    root = ET.fromstring(country_data_as_string)
    

    解析

    parse

    可接收文件名称或打开的文件对象

    生成的是ElementTree

    fromstring

    接收字符串形式的xml文件

    生成的是Element

    Element

    每个节点有tag和attrib和text

    另节点是一个可迭代的对象,可获得子节点

    for child in root:
        print(child.tag, child.attrib)
    

    也可通过下表来获取子节点

    root[0][1]
    

    不解析注释等

    查找元素

    iter

    以调用节点开始,深度优先寻找所有指定tag名称的元素并返回

    find findall

    只找直接子元素为指定tag名称的

    修改文件

    Element的text可直接读写,attrib是一个类dict的对象,也可在element上直接调用

    get可获得指定名称的attrib
    set可设置指定名称的attrib内容
    

    append在Element后加子节点

    remove移除一个子节点

    最后可用ElementTree的write函数指定输出名称保存

    另外有ET.dump函数可输出xml文档的

    名称空间

    如果使用了名称空间,则元素名称前还需携带,例如

    {http://characters.example.com}character
    

    最好是给出名称空间,例如

    ns = {'real_person': 'http://people.example.com',
          'role': 'http://characters.example.com'}
    
    for actor in root.findall('real_person:actor', ns):
        name = actor.find('real_person:name', ns)
        print(name.text)
        for char in actor.findall('role:character', ns):
            print(' |-->', char.text)
    

    函数参考

    项目级别

    iselement
    fromstring fromstringlist parse iterparse
    SubElement

    dump可接收element或element_tree并输出到标准输出,只适用于调试

    tostringlist tostring(element, encoding="us-ascii", method="xml", *, short_empty_elements=True)
    默认输出的是bytestring,传入encoding="unicode"生成Unicode字符串

    register_namespace(prefix, uri)

    Element级别

    Element(tag, attrib={}, **extra)

    clear清除所有子元素 属性 text等所有
    get items keys set
    append extend
    find findall findtext
    insert
    iter iterfind itertext
    remove

    ElementTree级别

    ElementTree(element=None, file=None)

    find findall findtext
    getroot iter iterfind parse
    write(file, encoding="us-ascii", xml_declaration=None, default_namespace=None, method="xml", *, short_empty_elements=True)

    相关文章

      网友评论

          本文标题:xml ElementTree

          本文链接:https://www.haomeiwen.com/subject/lmhcvqtx.html