本文实例讲述了Python实现的读?更改/写入xml文件操作。分享给大家供大家参考,具体如下:
原始文档内容(test.xml):
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; framework> & lt; processers> & lt;制造者的名字=癆Processer”文件=發ib64/个。” 路径=?tmp”比; & lt;/processer> & lt;制造者的名字=文件=癇Processer lib64/B。所以“价值=" https://www.yisu.com/zixun/fordelete "比; & lt;/processer> & lt;制造者的名字==發ib64/B.so2222222”“BProcesser”文件/比; & lt; services> & lt;服务名称="搜索" prefix="/bin/搜索# 63; output_formatter=" outputformat: service_inc”比; & lt;链顺序=" chain1 "/比; & lt;链顺序=" chain2 "祝辞& lt;/chain> & lt;/service> & lt;服务名称==案隆鼻白?bin/更新# 63;“比; & lt;链顺序=" chain3 " value=" https://www.yisu.com/zixun/fordelete "/比; & lt;/service> & lt;/services> & lt;/processers> & lt;/framework> >之前Python操作xml代码:
# - * -编码:utf - 8 - * ''' 创建、xml_declaration=True) def if_match(节点,kv_map): ”“判断某个节点是否包含所有传入参数属性 节点:节点 kv_map:属性及属性值组成的地图” 在kv_map关键: 如果node.get(关键)!=kv_map.get(重要): 返回假 还真 # - - - - - - - - - - - - - - - -搜索- - - - - - def find_nodes(树、路径): ”“查找某个路径匹配的所有节点 树:xml树 路径:节点路径” 返回tree.findall(路径) def get_node_by_keyvalue(节点列表,kv_map): ”“根据属性及属性值定位符合的节点,返回节点 节点列表:节点列的表 kv_map:匹配属性及属性值地图” result_nodes=[] 节点的节点列表: 如果if_match(节点,kv_map): result_nodes.append(节点) 返回result_nodes # - - - - - - - - - - - - - - - - -改改- - - - - - def change_node_properties(节点列表,kv_map is_delete=False): ”“修改/增加/删除节点的属性及属性值 节点列表:节点列的表 kv_map:属性及属性值地图” 节点的节点列表: 在kv_map关键: 如果is_delete: 如果在node.attrib关键: 德尔node.attrib(例子) 其他: 节点。集(键,kv_map.get(关键)) def change_node_text(节点列表、文本is_add=False, is_delete=False): ”“改变/增加/删除一个节点的文本 节点列表:节点列的表 文字:更新后的文本” 节点的节点列表: 如果is_add: 节点。文本+=文本 elif is_delete: 节点。文本=" " 其他: 节点。文本=文本 def create_node(标签、property_map、内容): ”“新造一个节点 标签:节点标签 property_map:属性及属性值映射 内容:节点闭合标签里的文本内容 返回新节点” 元素=(标签,property_map) 元素。文本=内容 返回元素 def add_child_node(节点列表、元素): ”“给一个节点添加子节点 节点列表:节点列的表 元素:子节点” 节点的节点列表: node.append(元素) def del_node_by_tagkeyvalue(节点列表、标签、kv_map): ”“同过属性及属性值定位一个节点,并删除之 节点列表:父节点列的表 标签:子节点标签 kv_map:属性及属性值列表” parent_node在节点列表: 孩子=parent_node.getchildren () 儿童:儿童 如果孩子。标签==标签和if_match(孩子,kv_map): parent_node.remove(孩子) if __name__==癬_main__”: # 1。xml文读取件 树=read_xml (“D://test.xml”) # 2。属性修改 #。找到父节点 节点=find_nodes(树,“程序/加工业者”) # B。通过属性准确定位子节点 result_nodes=get_node_by_keyvalue(节点,{“名称”:“BProcesser”}) # C。修改节点属性 change_node_properties (result_nodes{“年龄”:“1”}) # D。删除节点属性 change_node_properties (result_nodes{“价值”:"},真的) # 3。节点修改 # a新建节点=create_node(“人”,{“年龄”:“15”,“钱”:" 200000 "},偏偏“内容”) # b插入到父节点之下 add_child_node (result_nodes) # 4。删除节点 #定位父节点 del_parent_nodes=find_nodes(树,“程序/服务/服务”) #准确定位子节点并删除之 target_del_node=del_node_by_tagkeyvalue (del_parent_nodes,“链”,{“顺序”:“chain1”}) # 5。修改节点文本 #定位节点 text_nodes=get_node_by_keyvalue (find_nodes(树,“程序/服务/服务/链”),{“顺序”:“chain3”}) change_node_text (text_nodes“新的文本”) # 6。输出到结果文件 write_xml(树,“D://xiugai.xml”)Python实现的读?更改/写入xml文件操作示例