1

我是 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​​','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:

OOP 的。我的错 !当我通过示例列表时,代码按预期工作。但在我的实际应用程序中,列表很长。该列表包含从 pdf 文件中提取的文本片段。在该文本的某处,我得到 UnicodeDecodeError(原因:pdf 提取的文本混乱。证明:'oops' 打印一次)并且返回的 xml 对象不完整。所以我需要找出一种方法,即使在 UnicodeDecodeErrors 上,我的完整列表也会被解析。那可能吗 !我正在使用 .decode('utf-8',errors='ignore') 即使解析没有完成!

4

0 回答 0