python3解析xml_Python3 解析XML 层序遍历二叉树

Python3 解析XML 层序遍历二叉树

keyword : python3, xml, xml.dom.minidom, 层序遍历, 层次遍历, 二叉树

part1 问题描述

面对如下 XML 文件,写程序按层序遍历二叉树,要求打印 text 节点中的 text 属性,并按文法的形式展示。

1.1 二叉树举例如下图

1.2 对应的文法规则如下所示

Root ->Dir +AbMissHigh

Dir ->截至

AbMissHigh ->AbMissHigh +PartOf

AbMissHigh ->Num +Tut

PartOf ->Dt +Tut

Num ->21

Tut ->日

Dt ->上

Tut ->午

part 2 程序代码

import xml.dom.minidom

def getText(node):

return node.firstChild.getAttribute('text')

def getChilds(node):

nodes = list()

for child in node.childNodes:

if (child.nodeName == "syntacticstructure"):

nodes.append(child)

return nodes

if __name__ == "__main__":

DOMTree = xml.dom.minidom.parse("kim.xml")

sentence = DOMTree.documentElement

syntacticstructure = sentence.firstChild

q = list()

q.append(syntacticstructure)

while(len(q)):

node = q.pop(0)

for child in getChilds(node):

q.append(child)

if len(getChilds(node)):

print(getText(node) + "->", end="")

for i,child in enumerate(getChilds(node)):

if i == len(getChilds(node)) - 1:

print(getText(child))

else:

print(getText(child) + "+", end="")

附录

xml文件。文件名 kim.xml:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值