从层次结构级别和文本创建XML树[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从层次结构级别和文本创建XML树[关闭]相关的知识,希望对你有一定的参考价值。
我有一个文本文件,其层次结构级别和文本如下:
1 A
2 B
2 C
3 D
3 E
2 F
1 G
我想创建一个这样的XML文档:
<A>
<B></B>
<C>
<D></D>
<E></E>
</C>
<F></F>
</A>
<G></G>
是否有一个python库可以完成这项工作?
答案
与此同时,我自己也找到了答案。
import xml.etree.ElementTree as ET
class item:
""" class to hold level and tag """
def __init__(self, line):
__s_list = (line.split(' ', 1))
if len(__s_list) != 2:
raise Exception("Invalid list length: " + str(len(__s_list)) + " at " + line)
self.level = int(__s_list[0])
self.tag = __s_list[1].lstrip()
# Read infile and put items into list
list = []
with open(path + "sample.txt") as infile:
for line in infile:
line = line.rstrip('
')
list.append(item(line))
root = ET.Element("root")
tree = ET.ElementTree(root)
# Create list to hold last parent per level
last_parents = []
last_parents[0] = root
for element in list:
# extend last_parents if necessary
if len(last_parents) <= element.level + 1:
last_parents.append[None]
# insert element into tree and save it in last_parents
last_parents[element.level] = ET.SubElement(last_parents[element.level-1], element.tag)
print(str(element.level) + ": "+ element.tag)
tree.write(path+"sample.xml")
得到:
<root>
<A>
<B />
<C>
<D />
<E />
</C>
<F />
</A>
<G />
</root>
以上是关于从层次结构级别和文本创建XML树[关闭]的主要内容,如果未能解决你的问题,请参考以下文章