我是 python 新手。我想创建一个具有一个父级、多个子级和多个子级的 xml 树。我已将子标签存储在列表“TAG”中,子标签在列表“SUB”中我想出了以下代码,但我无法达到预期的结果!
def make_xml(tag,sub):
'''
Takes in two lists and Returns a XML object.
The first list has to contain all the tag objects
The Second list has to contain child data's
'''
from xml.etree.ElementTree import Element, SubElement, Comment, tostring
top = Element("Grand Parent")
comment = Comment('This is the ccode parse tree')
top.append(comment)
i=0
try:
for ee in tag:
child = SubElement(top, 'Tag'+str(i))
child.text = str(tag[i]).encode('utf-8',errors = 'ignore')
subchild = SubElement(child, 'Content'+str(i))
subchild.text = str(sub[i]).encode('utf-8',errors = 'ignore')
i = i+1;
except UnicodeDecodeError:
print 'oops'
return top
编辑:我有两个这样的列表: TAG = ['HAPPY','GO','LUCKY'] SUB = ['ED','EDD','EDDY']
我想要的是:
<G_parent>
<parent1>
HAPPY
<child1>
ED
<\child1>
<\parent1>
<parent2>
GO
<child2>
EDD
<\child2>
<\parent2>
<parent3>
LUCKY
<child3>
EDDY
<\child3
<\parent3>
<\G_parent>
实际列表的内容比这多得多。我想使用for循环左右来实现。
EDIT:
OOP 的。我的错 !当我通过示例列表时,代码按预期工作。但在我的实际应用程序中,列表很长。该列表包含从 pdf 文件中提取的文本片段。在该文本的某处,我得到 UnicodeDecodeError(原因:pdf 提取的文本混乱。证明:'oops' 打印一次)并且返回的 xml 对象不完整。所以我需要找出一种方法,即使在 UnicodeDecodeErrors 上,我的完整列表也会被解析。那可能吗 !我正在使用 .decode('utf-8',errors='ignore') 即使解析没有完成!