2016-08-24 76 views
0

我创建了一个将数据写入xml文件的代码,但它无法正常工作。它提供了一个名为错误“类型错误:必须是元,而不是无 ”将孩子的孩子添加到python xml中

这里是我的代码:

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

问题是doc变成了None,因为它等于set()调用的结果。相反,你本来打算让doc指向SubElement实例:

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

谢谢alecuxe。现在它正在工作。工作码是 根= ET.Element( “video_data”)在image_list 用于图像: DOC = ET.SubElement(根, '帧') doc.set( '姓名',图像) #predicted_item = predict_list [i] subdoc = ET.SubElement(doc,'object_name') subdoc.text = predicted_list [i] i + = 1 – KAz