zoukankan      html  css  js  c++  java
  • 【Python】etree方法生成,解析xml

    #练习:另一种遍历xml文件的方式etree,xpath
    import sys
    try:
    import xml.etree.cElementTree as ET #前面带c的都是比较快的,效率高且不占内存的,优先使用这个
    except ImportError:
    import xml.etree.ElementTree as ET

    tree = ET.ElementTree(file='e:\movie.xml')
    root=tree.getroot()
    print root.tag #打印根tag
    print root.attrib #打印属性

    for child_of_root in root:
    print child_of_root.tag
    print "********", child_of_root.attrib


    print "*"*50

    print root[0].tag
    print root[0].text #“打印的内容为一个回车”
    print root[0][0].tag
    print root[0][0].text
    print root[0][1].tag
    print root[0][1].text

    print "*"*50
    for elem in tree.iter(): #递归遍历所有子元素
    print elem.tag, elem.text, elem.attrib #属性返回的是一个字典

    print "*"*50
    for elem in tree.iterfind('movie/type'): #查找movie下一级节点中的所有type标签
    print elem.tag, elem.text,elem.attrib

    print "*"*50
    for elem in tree.iter(tag='stars'): #在整个树中查找标签为star的元素
    print elem.tag, elem.text,elem.attrib

    print "*"*50
    for elem in tree.iterfind('*[@title="Ishtar"]'): #在下一级节点查找属性为title="Ishtar"的元素
    print elem.tag, elem.text,elem.attrib

    print "*"*50
    for elem in tree.iterfind('movie[@title="Ishtar"]'): #查找属性为title="Ishtar"的元素
    print elem.tag, elem.attrib


    print "*"*50
    root = tree.getroot() #获取第一级movie元素
    print "first movie:",root[0].tag #打印第一级movie元素的标签,为movie
    print "subnode:",root[0][0].tag #打印第一级movie元素下的第一个子元素标签type
    print "subnode:",root[0][1].tag #打印第一级movie元素下的第二个子元素标签format
    print "subnode:",root[0][2].tag #打印第一级movie元素下的第三个子元素标签year
    print "subnode:",root[0][3].tag #打印第一级movie元素下的第四个子元素标签rating
    print "subnode:",root[0][4].tag #打印第一级movie元素下的第五个子元素标签stars
    print "subnode:",root[0][5].tag #打印第一级movie元素下的第五个子元素标签description

    print "*"*50
    del root[0][4] #删除第一级movie元素下的第四个子元素
    del root[0][3] #删除第一级movie元素下的第三个子元素
    del root[0][2] #删除第一级movie元素下的第二个子元素
    del root[0][1] #删除第一级movie元素下的第一个子元素

    del root[3] #删除第四个movie元素
    del root[2] #删除第三个movie元素

    print "*"*50
    for subelem in root:
    print subelem.tag, subelem.attrib #打印第一个movie和第二个movie元素的标签和属性


    print "*"*50
    print tree.write(sys.stdout) #将xml文件的内容写到屏幕上
    tree.write("e:\movie.xml") #将变更的xml文件写入到文件中


    #练习:生成xml
    import sys
    try:
    import xml.etree.cElementTree as ET
    except ImportError:
    import xml.etree.ElementTree as ET

    a = ET.Element('elem') #生成一个节点elem,没有文本节点
    c = ET.SubElement(a, 'child1') #生成一个字节点下的子节点child1
    c.text = "some text" #在子节点上添加文本节点
    d = ET.SubElement(a, 'child2') #生成一个字节点下的子节点child2
    b = ET.Element('elem_b') #生成一个节点elem_b,没有文本节点
    root = ET.Element('root') #生成一个节点root
    root.extend((a, b)) #将a、b两个变量存储的节点elem和elem1添加到root节点下
    tree = ET.ElementTree(root) #生成节点树
    root[0].set('foo', 'bar') #设定第一个子元素的属性foo,值为bar
    tree.write(sys.stdout) #打印节点树
    tree.write("d:\test.xml") #将xml文件内容写入到文本文件中

  • 相关阅读:
    如何做兼容性测试
    python批量转换excl为csv
    mysql删除用户后再次创建用户报错
    xadmin
    CORS跨域资源共享
    drf自定义公共组件
    luffy项目前端初始化
    luffy项目后端初始化
    企业级项目的环境准备
    base64编码的使用
  • 原文地址:https://www.cnblogs.com/jingsheng99/p/8667254.html
Copyright © 2011-2022 走看看