Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lxml将节点从一个xml文件复制到另一个xml文件_Python_Xml_Lxml - Fatal编程技术网

Python 使用lxml将节点从一个xml文件复制到另一个xml文件

Python 使用lxml将节点从一个xml文件复制到另一个xml文件,python,xml,lxml,Python,Xml,Lxml,我试图找到将一个节点复制到另一个XML文件的最简单方法。两个文件将包含相同的节点-只是该节点的内容将不同 在过去,我对每个元素和子元素都做了一些疯狂的复制,但是必须有更好的方法 #Master XML parser = etree.XMLParser(strip_cdata=False) tree = etree.parse('file1.xml', parser) # Find the //input node - which has a lot of subelems inputMaster

我试图找到将一个节点复制到另一个XML文件的最简单方法。两个文件将包含相同的节点-只是该节点的内容将不同

在过去,我对每个元素和子元素都做了一些疯狂的复制,但是必须有更好的方法

#Master XML
parser = etree.XMLParser(strip_cdata=False)
tree = etree.parse('file1.xml', parser)
# Find the //input node - which has a lot of subelems
inputMaster= tree.xpath('//input')[0]

#Dest XML - 
parser2 = etree.XMLParser(strip_cdata=False)
tree2 = etree.parse('file2.xml', parser2)
# this won't work but.. it would be nice
etree.SubElement(tree2,'input') = inputMaster

这里有一种方法-它不聪明,因为它失去了位置,即它在末端弹出节点,但是嘿

    def getMaster(somefile):
       parser = etree.XMLParser(strip_cdata=False)
       tree = etree.parse(somefile, parser)
       doc = tree.getroot()
       inputMaster =  doc.find('input')
       return inputMaster

     inputXML = getMaster('master_file.xml')
     parser = etree.XMLParser(strip_cdata=False)
     tree = etree.parse('file_to_copy_node_to.xml', parser)
     doc = tree.getroot()
     doc.remove(doc.find('input'))
     doc.append(inputXML)   
     # Now write it
     newxml = etree.tostring(tree, pretty_print=True)
     f = open('file_to_copy_node_to.xml', 'w')
     f.write(newxml)
     f.close()