私はpythonが初めてです。1 つの親、複数の子、および複数の子を持つ 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
編集: 次のような 2 つのリストがあります: 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:
おっとっと。私の悪い!サンプルリストを渡すと、コードは期待どおりに機能します。しかし、私の実際のアプリケーションでは、リストは長いです。リストには、pdf ファイルから抽出されたテキストの断片が含まれています。そのテキストのどこかで UnicodeDecodeError(理由: pdf で抽出されたテキストが乱雑です。証明: 'oops' は一度印刷されます) を取得し、返された xml オブジェクトは不完全です。したがって、UnicodeDecodeErrors でも完全なリストが解析される方法を見つける必要があります。それは可能ですか!私は .decode('utf-8',errors='ignore') を使用していますが、それでも解析は完了しません!