- 论坛徽章:
- 13
|
本帖最后由 代号:军刀 于 2013-09-05 17:17 编辑
test.xml- <?xml version="1.0"?>
- <data>
- <platform name="A">
- <server id="1" ip="192.168.19.103" />
- <server id="3" ip="192.168.19.103" />
- <server id="4" ip="192.168.19.102" />
- </platform>
- <platform name="B">
- <server id="1" ip="8.8.8.8" />
- </platform>
- </data>
复制代码 现在遇到的问题是,我现在老是不能把数据插到正确的位置,比如数据为:<server id="9" ip="1.2.3.4" />- #!/usr/bin/python
- #coding=utf-8
- from xml.etree.ElementTree import ElementTree,Element
- def read_xml(in_path):
- tree=ElementTree()
- tree.parse("test.xml")
- return tree
- def write_xml(tree,out_path):
- tree.write(out_path)
- def if_match(node,kv_map):
- for key in kv_map:
- if node.get(key) != kv_map.get(key):
- return False
- return True
- def find_nodes(tree,path):
- return tree.findall(path)
- def get_node_by_keyvalue(nodelist,kv_map):
- result_nodes=[]
- for node in nodelist:
- if if_match(node,kv_map):
- result_nodes.append(node)
- return result_nodes
- def create_node(tag,property_map):
- element=Element(tag,property_map)
- return element
- def add_child_node(nodelist,element):
- for node in nodelist:
- node.append(element)
- if __name__ == "__main__":
- #读取xml文件
- tree=read_xml("./test.xml")
- #属性修改
- nodes=find_nodes(tree,"platform")
- result_nodes=get_node_by_keyvalue(nodes,{"name":"A"})
- a=create_node("server",{"id":"9","ip":"1.2.3.4"})
- add_child_node(result_nodes,a)
- write_xml(tree,"test.xml")
复制代码 我的代码运行后xml的格式如下:- <data>
- <platform name="A">
- <server id="1" ip="192.168.19.103" />
- <server id="3" ip="192.168.19.103" />
- <server id="4" ip="192.168.19.102" />
- <server id="9" ip="1.2.3.4" /></platform>
- <platform name="B">
- <server id="1" ip="8.8.8.8" />
- </platform>
- </data>
复制代码 我想要的结果是:- <data>
- <platform name="A">
- <server id="1" ip="192.168.19.103" />
- <server id="3" ip="192.168.19.103" />
- <server id="4" ip="192.168.19.102" />
- <server id="9" ip="1.2.3.4" />
- </platform>
- <platform name="B">
- <server id="1" ip="8.8.8.8" />
- </platform>
- </data>
复制代码 求大神帮忙 |
|