一位新手到Python,甚至更多的XML以便与我携手:)我可以克隆一个xml节点吗?
我有一个现有的xml文件,其结构如下。我想克隆任何符合<name>.text == "Bill"
或任何我指定的<Zone>
节点。
我试过循环和使用elem.append(copy.deepcopy(---))
但我最终追加了节点,然后被添加到我的循环 - 不用说它跑了一段时间!
我可以轻松地做到这一点,或者我必须将所有内容写入其他文件吗?我会添加代码,但担心它会被破坏,并且会让事情变得复杂!
希望我已经明确了这个问题。
<DBname>
<Level_1>
<Zone>
<name>Fred</name>
<att1>xxx</att1>
<att2>yyy</att2>
</Zone>
<Zone>
<name>Bill</name>
<att1>111</att1>
<att2>222</att2>
</Zone>
<Zone>
<name>Bob</name>
<att1>333</att1>
<att2>444</att2>
</Zone>
</Level_1>
</DBname>
好吧,我可能已经制定了解决方案,但任何意见/改进,深受欢迎。
这不起作用。所附的项目的东西了 “for” 循环:
from lxml import etree as ET
import copy
tree = ET.parse(xml_file)
root = tree.getroot()
for elem in root:
for source in elem:
if source.find('name').text == "Bill":
elem.append(copy.deepcopy(source))
这确实出现了工作:
from lxml import etree as ET
import copy
tree = ET.parse(xml_file)
root = tree.getroot()
for elem in root:
for zone in elem.findall('Zone'):
if zone.find('name').text == "Bill":
elem.append(copy.deepcopy(zone))
感谢伊布 - 为解释和额外的代码提示为好。我在学! – RustyC 2013-03-01 03:42:07