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

<ccm>
<metric>
<complexity>1</complexity>
<unit>multiply</unit>
<classification>A</classification>
<file>all\mymath.py</file>
<startLineNumber>9</startLineNumber>
<endLineNumber>10</endLineNumber>
</metric>
<metric>
<complexity>1</complexity>
<unit>divide</unit>
<classification>A</classification>
<file>all\mymath.py</file>
<startLineNumber>13</startLineNumber>
<endLineNumber>14</endLineNumber>
</metric>
</ccm>
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:

<!DOCTYPE html>
<html lang="en"> <head>
<title>Radon</title>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head> <body>
<h1>Radon-圈复杂度检查结果</h1>
<table class="table table-hover">
<thead>
<tr>
{% for td in data[0] %}
<th>{{ td.tag }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{%for m in data%}
{% set complexity = m[0].text|float %}
{% if m[0].text|float < 6 %} #或者 {% if complexity < 6 %}
<tr class="success">
{% for v in m %}
<td>{{v.text}}</td>
{% endfor %}
</tr>
{% else %}
<tr class="danger">
{% for v in m %}
<td>{{v.text}}</td>
{% endfor %}
</tr>
{% endif %}
{%endfor%}
</tbody>
</table>
</body> </html>

渲染脚本:

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 文件生成 HTML的更多相关文章

  1. 【TensorFlow】Python解析xml文件

    最近在项目中使用TensorFlow训练目标检测模型,在制作自己的数据集时使用了labelimg软件对图片进行标注,产生了VOC格式的数据,但标注生成的xml文件标签值难免会产生个别错误造成程序无法跑 ...

  2. python 解析xml 文件: Element Tree 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  3. python 解析xml 文件: DOM 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  4. python 解析xml 文件: SAX方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  5. 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件

    XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...

  6. Python解析xml文件遇到的编码解析的问题

    使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...

  7. python 解析 XML文件

    如下使用xml.etree.ElementTree模块来解析XML文件.ElementTree模块中提供了两个类用来完成这个目的: ElementTree表示整个XML文件(一个树形结构) Eleme ...

  8. [转载] python 解析xml 文件: SAX方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  9. python解析xml文件时使用ElementTree和cElementTree的不同点;iter

    在python中,解析xml文件时,会选用ElementTree或者cElementTree,那么两者有什么不同呢? 1.cElementTree速度上要比ElementTree快,比较cElemen ...

随机推荐

  1. c# 修改xml格式config文件

    xml 格式的config文件如下: <?xml version="1.0" encoding="utf-8"?> <configuratio ...

  2. html5粒子连线

    <html> <head> <title></title> <meta charset="utf-8" /> <s ...

  3. PM2管理工具的使用

    linux上PM2可以管理服务程序,防止程序无故关闭,具有程序守护功能,自动重启服务器程序,监控程序等好处,很方便,具体自己去体会! 官网地址:  http://pm2.keymetrics.io/ ...

  4. python ---多线程thread

    thread 在数据预处理的时候用处不大,因为有GIL 锁 查看thread信息 import threading print(threading.current_thread()) print(th ...

  5. ModuleNotFoundError: No module named '_pydevd_bundle.pydevd_cython' error on debug

    现象:pycharm调试代码出现错误:ModuleNotFoundError: No module named '_pydevd_bundle.pydevd_cython' error on debu ...

  6. 说说html 的<!DOCTYPE>声明&标准模式与兼容模式

    我们都知道<!DOCTYPE>声明位于文档的最前面,处于<html>标签之前. <!DOCTYPE>声明不是html标签,它的作用:告知web浏览界面应该使用哪个h ...

  7. C# 自定义用户控件

    上篇:控件制作 本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果.我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享. 第一步 ...

  8. Vue 的路由实现 Hash模式 和 History模式

    Hash 模式: Hash 模式的工作原理是onhashchange事件,Window对象可以监听这个事件... 可以通过改变路径的哈希值,来实现历史记录的保存,发生变化的hash 都会被浏览器给保存 ...

  9. android studio eclipse keymap theme 快捷键 主题风格设置

    android studio eclipse keymap theme 快捷键 主题风格设置 将Android Studio的快捷键设置与eclipse一致,使用习惯的快捷键才顺手.Mac系统下:进入 ...

  10. 阻塞队列---ArrayBlockingQueue,LinkedBlockingQueue,DelayQueue源码分析

    阻塞队列和非阻塞队列阻塞队列和非阻塞队列的区别:阻塞队列可以自己阻塞,非阻塞队列不能自己阻塞,只能使用队列wait(),notify()进行队列消息传送.而阻塞队列当队列里面没有值时,会阻塞直到有值输 ...