Python实现的读?更改/写入xml文件操作示例

  

本文实例讲述了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文件操作示例