xml文档_扣丁学堂解析Python开发实现读取/更改/写入xml文件操作源码示例

今天,按钮学校的Python培训老师仍然与大家分享Python实现的读取/更改/写入xml文件的操作,其中涉及到对Python相关实现技术的源代码示例的分析,如读取、节点操作、写入等。让我一起看看它们。

xml文档

原始文档内容(test.xml):<?XML version = " 1.0 " encoding = " UTF-8 "?>;<。框架>。<。处理器><。processername = " aProcesser " file = " lib 64/a . so " path = "/tmp " >;<。/processor & gt。<。processorname = " b processor " file = " lib 64/b . so " value = " for delete " >;<。/processor & gt。<。processorname = " b processor " file = " lib 64/b . so 2222222 "/& gt。<。服务>。<。servicename="search "前缀="/bin/search?"output _ formatter = " Output formatter:service _ Inc " & gt。<。link sequence = " chain 1 "/& gt。<。chainsequency = " chain2 " ><。/chain>。<。/service>。<。servicename="update "前缀="/bin/update?">;<。link sequence = " chain 3 " value = " for delete "/& gt。<。/service>。<。/services>。<。/processors & gt。<。/framework>。Python操作xml代码:#-*-编码:UTF-8-*-' ' '创建于2018年8月30日@作者:管理员''''来自XML。伊特瑞。元素树导入树。Elementdefread_xml(in_path):“”“”读取并解析xml文件in _ path:xml path return:element tree '''' tree = element tree . parse(in _ path)returntreedfwrite _ xml(树,Out_path:“”)将XML文件写入树外:XML树out_path:写入路径' ' ' '树。写(out _ path,encoding = "utf-8 ",XML _ declaration = true)defif _ match(node,Kv_map):“”'判断一个节点是否包含所有传入的参数属性node: node kv_map: map由属性和属性值组成' ' ' forkeyinkv _ map: ifnode.get (key)!=kv_map.get(键):returntreeFailReturnTRUe # search-def find _ nodes(树,路径):“”“查找所有节点”树:xml树路径:节点路径“”return树。find ll(path)defget _ node _ by _ key value(nodelist,kv _ map):“”“”根据属性和属性值定位匹配的节点。返回节点节点列表:节点列表kv_map:匹配属性和属性值映射' ' ' ' result _ nodes = for odeinodelist:ifif _ match(node,kv_map):result _ nodes . append(node)返回result _ nodes # change-def change _ node _ properties(nodelist,kv_map,Is_delete=False):' ' ' ' ' '修改/添加/删除节点属性和属性值节点列表:节点列表kv _ map:属性和属性值映射' ' ' ' for odeinodelist:forkeyinkv _ map:IFIs _ Delete:ifkeinnode。 Is_delete=False):''''''' '更改/增加/删除文本节点列表:节点列表文本:已更新的文本' ' ' '用于odein delist:IFIs _ Add:node . text+= text elifis _ Delete:node . text = " " else:node . text = textdefcreate _ node(标记,属性_映射,内容):''''创建新节点标记:节点标记属性_映射:属性和属性值映射内容:节点结束标记中的文本内容返回新节点' ' ' '元素=元素(标记,属性_映射)元素。text = contentreturnelementdefadd Nodelist:父节点列表标记:子节点标记kv _ map:parent _ nodein delist:children = parent _ node . getchildren for children in Children:if child . tag = = tagandif _ match(ch Ild,kv _ map):parent _ node . remove(child)if _ _ name _ _ = " _ _ main _ _ ":# 1。读取xml文件树=读取_ XML(“d://test . XML”)# 2。属性修改# a .查找父节点=查找_节点(树,“处理器/处理器”)# b .准确定位子节点结果_节点=获取_节点_按_键值(节点,{“名称”:“处理器”}) # c .修改节点属性更改_节点_属性(结果_节点,{“年龄”:“1”})# d .删除节点属性更改_节点_属性(结果_节点,{“值”:“},true) # 3。节点修改# a .新节点a =创建_节点(“人”,{“年龄”:“15”,“钱”:“200000”},“这是最后的内容”)# B .添加_子节点(结果_节点,A) # 4。删除节点#定位父节点del _ Parent _ Nodes =查找节点(树,“处理器/服务/服务”)#目标_ DEL _ NODE = DEL _ NODE _ BY _ TAGKEYVALUE(DEL _ PARENT _ NODES,“链”),它准确地定位和删除子节点。{ " sequence ":" chain 1 " })# 5。修改节点文本#定位节点文本_节点= get _ node _ by _ keyvalue(查找节点(树,“处理器/服务/服务/链”),{“顺序”:“链3”})更改_ node _ text(文本_节点,“新文本”)# 6。修改后输出到结果文件write_xml(树型):<?xmlversion='1.0 '编码='utf-8 '?>;<。框架>。<。处理器><。processer file = " lib 64/a . so " name = " aProcesser " path = "/tmp " >;<。/processor & gt。<。processor age = " 1 " file = " lib 64/b . so " name = " b processor " >;<。personage = " 15 " money = " 200000 " >这是最后的内容/person>。<。/processor & gt。<。processor age = " 1 " file = " lib 64/b . so 2222222 " name = " b processor " >;<。personage = " 15 " money = " 200000 " >这是最后的内容/person>。<。/processor & gt。<。服务>。<。service name = " search " output _ formatter = " Output formatter:service _ Inc "前缀="/bin/search?">;<。link sequence = " chain 2 "/& gt。<。/service>。<。servicename="update "前缀="/bin/update?">;<。link sequence = " chain 3 " value = " for delete " >newtext & lt/chain>。<。/service>。<。/services>。<。/processors & gt。<。/framework>。以上详细介绍了按钮学校在Python中实现的读取/更改/写入xml文件的操作,希望对大家学习Python开发有所帮助。
干红葡萄酒配什么好喝_长城干红葡萄酒官网word不能粘贴_Word|如何粘贴表格
热门推荐
  • 中国足球赢也爱图片_中国足球队员谢羽图片
  • 古装头饰步摇diy教程视频_古风凤冠制作教程
  • 迅雷ios12企业信任版_2019 ios12迅雷下载地址
  • 安卓一键换机_安卓一键换机软件
  • 7栋空间_东莞理工学院7栋空间
  • 儿童玩具油罐车视频_玩具工程车视频
  • 为什么有些人招蚊子_特别招惹蚊子咬的体质
  • 毕业照创意
  • 韩国物价一览表_韩国大学学费一览表
  • 惠州市第三中学_惠州市第二中学
  • 大学单位性质怎么填写_就业单位性质怎么填写
  • 迪丽热巴又没有漂亮的照片_迪丽热巴最美照片
  • 幼儿教育学重点知识点_幼儿教育学基础知识大全文库
  • 上海市闵行区房地产交易中心_上海市闵行区房地产交易中心电话
  • 毛巾变黑_毛巾用什么洗最干净
  • 2017年nba总决赛各场数据_2010年nba总决赛第七场数据
  • 干部职工贷款请假报告_干部职工住房清理报告
  • abc字母表
  • 冠状疫情各地防控_各地加强对公共场合的疫情防控工作
  • 我是大明星大蒜哥_我是大明星苹果哥