LXAN元素

2024-09-30 01:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个文件(file1.xml)中获取两个元素,并将它们写入另一个文件(file2.xml)的末尾。我可以让它们打印出来,但却无法将它们写入file2.xml!救命啊!在

filename = "file1.xml"
appendtoxml = "file2.xml"
output_file = appendtoxml.replace('.xml', '') + "_editedbyed.xml"
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse(filename, parser)
etree.tostring(tree)
root = tree.getroot()


a = root.findall(".//Device")
b = root.findall(".//Speaker")



for r in a:
    print etree.tostring(r)
for e in b:
    print etree.tostring(e)

NewSub = etree.SubElement (root, "Audio(just writes audio..")
print NewSub

我想把a,b的结果加到输出文件.xml在根部。在


Tags: 文件intreeparserforrootxmlfilename
1条回答
网友
1楼 · 发布于 2024-09-30 01:35:29
  • 解析输入文件和要附加到的文件。在
  • 使用^{}将元素elt追加到root。在
  • 然后使用^{}将新树写入文件(例如appendtoxml):

注意:上面的链接指向标准中xml.etree的文档 图书馆。因为lxml的API试图与标准库的API兼容 xml.etree,标准库文档也适用于{}(在 至少对于这些方法)。请参阅http://lxml.de/api.html以获取有关在何处的信息 API各不相同。在


import lxml.etree as ET
filename = "file1.xml"
appendtoxml = "file2.xml"
output_file = appendtoxml.replace('.xml', '') + "_editedbyed.xml"

parser = ET.XMLParser(remove_blank_text=True)
tree = ET.parse(filename, parser)
root = tree.getroot()

out_tree = ET.parse(appendtoxml, parser)
out_root = out_tree.getroot()
for path in [".//Device", ".//Speaker"]:
    for elt in root.findall(path):
        out_root.append(elt)

out_tree.write(output_file, pretty_print=True)

如果file1.xml包含

^{pr2}$

并且file2.xml包含

<?xml version="1.0"?>
<root>
<Speaker>jubal</Speaker>
<Device>crane</Device>
</root>

file2_editedbyed.xml将包含

<root>
  <Speaker>jubal</Speaker>
  <Device>crane</Device>
  <Device>waaboo</Device>
  <Device>gigiwishimowin</Device>
  <Speaker>boozhoo</Speaker>
  <Speaker>anin</Speaker>
</root>

相关问题 更多 >

    热门问题