Python 解析 XML 文件生成 HTML

XML文件result.xml,内容如下:

    
    
        1
        multiply
        A
        all\mymath.py
        9
        10
    
    
        1
        divide
        A
        all\mymath.py
        13
        14
    

import xml.etree.cElementTree as ET
import os
import sys

tree = ET.ElementTree(file='result.xml')

# 根元素(root)是一个Element对象。我们看看根元素都有哪些属性
root = tree.getroot()

# 没错,根元素并没有属性。与其他Element对象一样,根元素也具备遍历其直接子元素的接口
for child_of_root in root:
    print(child_of_root,child_of_root.attrib)
    for x in child_of_root:
        print(child_of_root, x, x.tag,':',x.text)

利用Jinja2生成HTML

模版文件templa/base.html:





    Radon
    
    
    



    

Radon-圈复杂度检查结果

{% for td in data[0] %} {% endfor %} {%for m in data%} {% set complexity = m[0].text|float %} {% if m[0].text|float < 6 %} #或者 {% if complexity < 6 %} {% for v in m %} {% endfor %} {% else %} {% for v in m %} {% endfor %} {% endif %} {%endfor%}
{{ td.tag }}
{{v.text}}
{{v.text}}

渲染脚本:

from jinja2 import Environment, FileSystemLoader

t=[]
for metric in root:
    t.append(metric)
    
print(t)

xml_loader = FileSystemLoader("template")
xml_env = Environment(loader=xml_loader)
xml_tmp = xml_env.get_template("base.html")

xml_info = xml_tmp.render(data=t)

with open(os.path.join("template", "result.html"), "w") as f:
    f.write(xml_info)

参考:

  • 深入解读Python解析XML的几种方式
  • xml.etree.ElementTree — The ElementTree XML API
  • Does the Jinja2 templating language have the concept of 'here' (current directory)?
  • 欢迎来到 Jinja2
  • jinja2模板

你可能感兴趣的:(Python 解析 XML 文件生成 HTML)