• python xml模块


    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    import xml

    import requests
    from xml.etree import ElementTree as et

    ## 1.以字符串方式读取xml文件
    page = open('blog.xml','r',encoding='utf-8').read()
    root = et.XML(page)
    print(root.tag)# 当前节点的标签名 tag
    for node in root:
    print(node.tag,node.attrib,node.find('year').text)

    #当前节点的属性 attrib
    #当前节点的内容 text

    ##2.以解析文件方式打开文件,可修改文件内容
    ## 对象都是由类创建的,方法都在类中
    ## tree---->1.由ElementTree类创建 ElementTree(xxx)
    ## 创建有两种方式:et.parse(文件路径),et.ElementTree(根节点)
    ## 2.getroot() 获取根节点
    ## 3.write() 将内存中的xml写入文件
    tree = et.parse('blog.xml')
    rot = tree.getroot()
    for nod in rot.iter('year'):
    new_year = int(nod.text)+1
    nod.text = str(new_year)
    # set(self, key, value):设置属性
    # get(self, key, default=None):获取当前节点的属性值
    nod.set('name','NF')
    # 删除属性
    del nod.attrib['name']

    print(dir(rot))# 查看本层节点下有哪些方法

    # append(self, subelement):为当前节点追加一个子节点
    # extend(self, elements):为当前节点扩展 n 个子节点
    # insert(self, index, subelement):在当前节点的子节点中插入某个节点,
    # 即:为当前节点创建子节点,然后插入指定位置
    # remove(self, subelement):在当前节点在子节点中删除某个节点
    # findall(self, path, namespaces=None):获取所有的子节点
    # iterfind(self, path, namespaces=None):
    # 获取所有指定的节点,并创建一个迭代器(可以被for循环)
    # clear(self):清空节点
    #

    tree.write('blog.xml')

    ##3.创建xml文件
    #创建节点有三种方式(节点都是Element对象类型):
    ##1)makeelement(self, tag, attrib):创建一个新节点
    ##2)Element(tag, attrib={}):创建一个节点
    ##3)SubElement(parent, tag, attrib={}, **extra)用来构造一个已经存在的节点的子节点

    #创建根节点
    fa = et.Element("father")

    #创建子节点
    s1 = et.Element('son',{'name':"长子"})
    s2 = fa.makeelement('son',{'name':'次子'})
    s3 = et.SubElement(fa,'son',attrib={'name':"三子"})

    #将子节点添加到父节点
    fa.append(s1)
    fa.append(s2)
    #prettify(elem):将节点转换成字符串,并添加缩进
    from xml.dom import minidom
    def prettify(root):
    rough = et.tostring(root,'utf-8')
    reparse = minidom.parseString(rough)
    return reparse.toprettyxml(indent=" ")
    new_str = prettify(fa)
    f = open("new_str.xml",'w',encoding='utf-8')
    f.write(new_str)
    f.close()

    ## 上述方法可以直接封装成一个方法
    def mywrite(root,file):
    rough = et.tostring(root, 'utf-8')
    reparse = minidom.parseString(rough)
    new_str = reparse.toprettyxml(indent=" ")
    f = open(file, 'w', encoding='utf-8')
    f.write(new_str)
    f.close()
    mywrite(fa,'writeXml.xml')
    #生成文档对象,写入文档
    ##xml_declaration 给xml文件开头加上注解
    # zp = et.ElementTree(fa)
    # zp.write("zp.xml",encoding='utf-8',xml_declaration=True)
  • 相关阅读:
    C# 装箱原型
    C# 反射浅谈(一)
    javascript介绍(二)
    javascript介绍(一)
    C#中 托管资源和非托管资源
    varchar && nvarchar 闲谈
    高内聚&&低耦合
    【android】移植IOS视图响应陀螺仪交互行为
    【android】如何实现猿题库题目的排版
    开心工作标准的硬件环境
  • 原文地址:https://www.cnblogs.com/wuxinyan/p/8836766.html
Copyright © 2020-2023  润新知