1

私は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​​','EDD​​Y']

私が欲しいのは:

<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') を使用していますが、それでも解析は完了しません!

4

0 に答える 0