<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike>
<strike id="5ntnv"></strike><ruby id="5ntnv"></ruby><del id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></del><strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<span id="5ntnv"><dl id="5ntnv"></dl></span>
<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike><th id="5ntnv"><noframes id="5ntnv"><span id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></span>
<span id="5ntnv"></span>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike><strike id="5ntnv"><i id="5ntnv"></i></strike><span id="5ntnv"></span>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<th id="5ntnv"><noframes id="5ntnv">
<ruby id="5ntnv"></ruby>
<strike id="5ntnv"><dl id="5ntnv"></dl></strike>

貴州網站建設公司貴州網站建設公司

python3.5修改IISWEB.CONFIG的相關方法

python3.5修改IISWEB.CONFIG的修改相關方法

閱讀次數:187 次  來源:admin  發布時間:
#!/usr/bin/env python3.5# -*- coding:utf8 -*-from xml.etree.ElementTree import ElementTree,Elementdef read_xml(in_path):    """    讀取并解析XML文件    :param in_path: XML路徑    :return:    """    tree = ElementTree()    tree.parse(in_path)    return treedef write_xml(tree,out_path):    """    將XML文件寫出    :param tree:    :param out_path:寫出路徑    :return:    """    tree.write(out_path,encoding="utf-8",xml_declaration=True)def if_match(node,kv_map):    """    判斷某個節點是否包含所有傳入參數屬性    :param node: 節點    :param kv_map: 屬性及屬性值組成的MAP    :return:    """    for key in kv_map:        if node.get(key) != kv_map.get(key):            return False        return Truedef find_nodes(tree,path):    """    查找某個路徑匹配的所有節點    :param tree:XML樹    :param path:節點路徑    :return:    """    return tree.findall(path)def get_node_by_keyvalue(nodelist,kv_map):    """    根據屬性及屬性值定位符合的節點,返回節點    :param nodelist: 節點列表    :param kv_map: 匹配屬性及屬性值MAP    :return:    """    result_nodes =[]    for node in nodelist:        if if_match(node,關方kv_map):            result_nodes.append(node)    return result_nodesdef change_node_properties(nodelist,kv_map,is_delete =False):    """    修改、增加、修改刪除 節點的關方屬性及屬性值    :param nodelist: 節點列表    :param kv_map: 屬性及屬性值MAP    :param is_delete:    :return:    """    for node in nodelist:        for key in kv_map:            if is_delete:                if key in node.attrib:                    del node.attrib[key]            else:                node.set(key,kv_map.get(key))def change_node_text(nodelist,text,is_add=False,is_delete=False):    """    改變、增加、修改刪除一個節點的關方文本    :param nodelist: 節點列表    :param text: 更新后的文本    :param is_add:    :param is_delete:    :return:    """    for node in nodelist:        if is_add:            node.text += text        elif is_delete:            node.text = ""        else:            node.text = textdef create_node(tag,property_map,content):    """    新造一個節點    :param tag:節點標簽    :param property_map:屬性及屬性值MAP    :param content: 節點閉合標簽里的文件內容    :return:新節點    """    element =Element(tag,property_map)    element.text =content    return elementdef add_child_node(nodelist,element):    """    給一個節點添加子節點    :param nodelist: 節點列表    :param element: 子節點    :return:    """    for node in nodelist:        node.append(element)def del_node_by_tagkeyvalue(nodelist,tag,kv_map):    """    同過屬性及屬性值定位一個節點,并刪除之    :param nodelist: 父節點列表    :param tag: 子節點標簽    :param kv_map: 屬性及屬性值列表    :return:    """    for parent_node in nodelist:        childree = parent_node.getchildren()        for child in childree:            if child.tag == tag and if_match(child,修改kv_map):                parent_node.remove(child)def config_file_rw(file):    """    對XML配置文件進行修復以滿足適應IIS    :param file: 目標文件    :return:    """    import re    x =re.compile("<ns0:")    y = re.compile("</ns0:")    z = re.compile("xmlns:ns0")    with open(file,"r",encoding="utf-8") as f:        txt = f.readlines()        for i, line in enumerate(txt):            if x.search(line):                txt[i] = x.sub("<", line)            elif y.search(line):                txt[i] = y.sub("</", line)            elif z.search(line):                txt[i] = "<configuration>\n"    with open(file,"w",encoding="utf-8") as fw:        fw.writelines(txt)        fw.close()        print("配置文件%s,修改成功!關方"%file)if __name__ == "__main__":    #1. 讀取xml文件    tree = read_xml("web.config")    # 找到父節點    print()    nodes = find_nodes(tree,修改 "connectionStrings/")    # 通過屬性準確定位子節點    result_nodes =(get_node_by_keyvalue(nodes,{ "name":"strConnection_HuaChenShiYou"}))    # 修改節點屬性    change_node_properties(result_nodes,{ "connectionString":"UwreW/Obe4fGk2CFW4uE6iZWaPAVn0nePXIrtNRApxEGLv6SHetFg6b%2BMLFhg9myAr2EI2b3FgHtKHOKVcjz5DPoV8%2BMAvpzqlEZP2JZqrVEofP3AulFUZbTLfmndYFRqIytlxSCeHr2A79EWHH9/xg0eSgsdvWd"})    # #2. 屬性修改    #  #A. 找到父節點    # nodes = find_nodes(tree, "processers/processer")    #  #B. 通過屬性準確定位子節點    # result_nodes = get_node_by_keyvalue(nodes, { "name":"BProcesser"})    #  #C. 修改節點屬性    # change_node_properties(result_nodes, { "age": "1"})    #  #D. 刪除節點屬性    # change_node_properties(result_nodes, { "value":""}, True)    #    # #3. 節點修改    #  #A.新建節點    # a = create_node("person", { "age":"15","money":"200000"}, "this is the firest content")    #  #B.插入到父節點之下    # add_child_node(result_nodes, a)    #    # #4. 刪除節點    #   #定位父節點    # del_parent_nodes = find_nodes(tree, "processers/services/service")    #   #準確定位子節點并刪除之    # target_del_node = del_node_by_tagkeyvalue(del_parent_nodes, "chain", { "sequency" : "chain1"})    #    # #5. 修改節點文本    #   #定位節點    # text_nodes = get_node_by_keyvalue(find_nodes(tree, "processers/services/service/chain"), { "sequency":"chain3"})    # change_node_text(text_nodes, "new text")    #    # #6. 輸出到結果文件    write_xml(tree, "new.config")    config_file_rw("new.config")
贊(4)
未經允許不得轉載:>貴州網站建設公司 » python3.5修改IISWEB.CONFIG的相關方法
国产欧美精品