0
我必须创建一个具有根名“结构”的xml文件,它应该由各种子元素“包”组成,每个子包含元素的树结构。一个数据包应该如下所示:通过遍历一组值来在python中创建XML文件
<L2>
<srcmac>value1</srcmac>
<dstmac>value2</dstmac>
</L2>
<L3>
<dscp>
<timetolive>value3</timetolive>
</dscp>
</L3>
<L4>
<protocol>value4</protocol>
</L4>
Th数据包应重复“n”次。 它给出了一些错误说:
import xml.etree.cElementTree as et
import pcapy
import sys
from struct import*
def main():
count=1
root=et.Element("structure")
#creating xml layout
eachpacket=et.SubElement(root,"packet")
while count<n:
child1=et.SubElement(eachpacket,"L2")
subchild1=et.SubElement(child1,"smac")
subchild2=et.SubElement(child1,"dmac")
child2=et.SubElement(eachpacket,"L3")
sub1=et.SubElement(child2,"sip")
sub2=et.SubElement(child2,"dip")
sub3=et.SubElement(child2,"dscp")
s2=et.SubElement(sub3,"timetolive")
child3=et.SubElement(eachpacket,"L4")
schild1=et.SubElement(child3,"protocol")
try:
count=count+1
subchild1.text=str(value1)
subchild2.text=str(value2)
s2.text=str(value3)
schild1.text=str(protocol)
except:
break
else:
tree=et.ElementTree(root)
tree.write("FileNew.xml")
pass
if __name__== "__main__":
main()
虽然我:不受约束的方法写()必须与ElementTree的实例(而不是得到了海峡实例)
这是我所编写的代码被称为得到了一个XML文件作为输出,但最后一个条目似乎覆盖了所有以前的条目,并且只有'数据包'的最后一次迭代存储在我生成的xml文件中。
我需要修改什么来获得完整的树迭代并纠正write()错误?
x,value1,value2,value3和protocol的值是多少?显示你的所有代码。 – swatchai
@swatchai它实际上读取.pcap(数据包)文件,并从中获取源mac,目标mac地址,并使用packet.next()将其移至pcap文件中的下一个数据包。我已经检查过,没有问题。然而,由于我是etree概念以及python的新手,我无法得到我需要做的来获得正确的输出。现在,你可以尝试打印value1,value2等值到“包”的每一个迭代.....你能建议某种方式来解决我的问题吗? –