检测Python中XML标记的错误嵌套

时间:2015-05-08 00:54:37

标签: python xml nested

关于测试XML标记的正确嵌套的问题:

我有一个标签列表,从xml文件中从上到下提取:

  1. 结算标记用正斜杠清楚地表示
  2. / to和/ lastname标记嵌套不正确。他们应该切换。 / lastname应在to,/ to parent标签内。
  3. tag_list = [' note',' to',' firstname',' / firstname',' lastname&#39 ;,' /到',' / lastname',' / note']

    发现/ lastname标签位于其父级之外的代码或方向是什么?/ /对?

    干杯。

2 个答案:

答案 0 :(得分:2)

删除反斜杠,迭代reversed版本,并与原始版本进行比较。

例如,这将为您提供差异指数:

wo = [tag[1: ] if tag and tag[0] == '/' else tag for tag in taglist]
rev = list(reversed(wo))
discrepancies = [i for i in xrange(len(wo)) if wo[i] != rev[i]]

答案 1 :(得分:1)

制作一个空堆栈。

  • 遍历列表:
    • 如果找到开始标记,请将其推入堆栈。
    • 如果找到结束标记,请将其与堆栈顶部的条目进行比较。
      • 如果堆栈为空或顶部不匹配,则失败。
      • 如果匹配,则弹出堆栈并继续。
  • 在迭代结束时:
    • 如果堆栈为空,则声明成功。
    • 否则失败。