【问题标题】:xml parsing not working correctlyxml 解析无法正常工作
【发布时间】:2014-06-30 05:15:14
【问题描述】:

我有一个结构如下的 XML 文件

<article>
<body>
text1
<collectionlink>
text2
</collectionlink>
text3
</body>
</article>

我使用 iterparser 进行解析。但它没有正确打印数据。我在这里添加代码。

从 xml.etree.ElementTree 导入迭代解析,转储

def main():
    fp=open("sam.xml",'r')
    tree_dict = create_dict_tree_elements(fp)

def create_dict_tree_elements(fp):
    depth=0
    for event,node in iterparse(fp, ['start', 'end', 'start-ns', 'end-ns']):
        if event=='start-ns' or event=='end-ns':
            continue
        if (event == 'start' and depth == 0):
            print node.text
            depth += 1
            continue        

        if (event == 'start' and depth >0 ):
            print node.text
            depth+=1

        if(event =='end' ):
            depth-=1



if __name__ == '__main__':
    main()

我的预期输出:

text1
text2
text3

输出正在获取

text1
text2

【问题讨论】:

  • 你在输出中得到了什么?
  • 节点深度 0 文章深度节点大于 1 正文文本1 节点深度大于 1 集合链接文本2
  • 你的预期输出是什么

标签: python xml iterparse


【解决方案1】:

就 ElementTree 而言,node.text 是开始标签和下一个标签之间的文本。结束标签和下一个标签之间的文本可以在 node.tail 中找到。

【讨论】:

  • 如何在 ElementTree 中找到 node.tail 的父节点
  • @user3715935,据我所知 ElementTree 中的 Element 不会保留对其父级的引用。您应该明确保留引用。
猜你喜欢
  • 1970-01-01
  • 2019-10-09
  • 2021-03-20
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多