将孩子的孩子添加到python xml

时间:2016-08-24 21:53:36

标签: python xml

我创建了一个将数据写入xml文件的代码。但它无法正常工作。它给出了一个名为“TypeError:必须是Element,而不是None”的错误 “

这是我的代码:

import xml.etree.cElementTree as ET
import lxml.etree
import lxml.builder

class create_xml:
  def __init__(self):
      pass


def write_xml(predicted_list, image_list):

   print predicted_list
   print image_list
   i = 0
   root = ET.Element("video_data")

   for image in image_list:
     doc = ET.SubElement(root, 'frame').set('name', image)
     predicted_item = predicted_list[i]
     ET.SubElement(doc, predicted_item) **Gives error in here**
     # doc.text = predicted_list[i]
     i += 1

 tree = ET.ElementTree(root)
 tree.write("/opt/lampp/htdocs/video_frames/test.xml")

我需要输出如下,

<video_data>
  <frame name="">
   <predicted_item>output</predicted_item>
  </frame>
</video_data>

但如果没有出现错误的代码段,它会给出如下输出:

 <video_data><frame name="/opt/lampp/htdocs/video_frames/bb/frame48.jpg" /></video_data>

请帮我解决一下,谢谢

1 个答案:

答案 0 :(得分:1)

问题是doc变为None,因为它等于set()调用的结果。相反,您的意思是doc指向SubElement实例:

doc = ET.SubElement(root, 'frame')
doc.set('name', image)