对 Python 来说有点新手,对 xml 来说更是如此,所以请多多包涵:)
我有一个现有的 xml 文件,其结构如下。我想克隆任何<Zone>
匹配的节点<name>.text == "Bill"
或我指定的任何节点。
我尝试循环并使用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))