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. java中JDBC连接Oracle数据库

    package com.xxxx.lunwen.test;import java.sql.*;public class DBUtil { static { try { // 加载Oracle驱动程序 ...

  2. python 翻译爬虫

    import urllib.request import urllib.parse import json while 1: content=input("请输入要翻译的内容:") ...

  3. Qt Md5应用示例

    [1].cpp文件 #include "widget.h" #include "ui_widget.h" #include <QCryptographic ...

  4. 开源词袋模型DBow3原理&源码(二)ORB特征的保存和读取

    util里提供了create_voc_step0用于批量生成features并保存,create_voc_step1读入features再生成聚类中心,比较适合大量语料库聚类中心的生成. 提取一张图的 ...

  5. mysql 问题:连不上

    问题描述: 客户端报错: MySQL Authentication plugin ‘caching_sha2_password’ cannot be loaded 解决方式: ALTER USER ' ...

  6. Eclipse中tomcat更改部署路径 deply path

    默认是部署在项目元数据文件夹.metadata文件夹下,需要更改到tomcat/webapps目录下 Eclipse中tomcat service设置 选择window ----show view-- ...

  7. superblock 区块数据读取

    鸟哥私房菜笔记: 命令:df -Th Filesystem:代表该文件系统是在哪个 partition ,所以列出设备名称:1k-blocks:说明下面的数字单位是 1KB 呦!可利用 -h 或 -m ...

  8. js多个异步请求

    一,两个(或多个)js异步并发执行,怎么在两个AJax异步操作之后执行一个新的操作 原题来自 ES6 方法 1.Promise 包装异步ajax操作,2.定义async 函数,3.用await等待pr ...

  9. [转载]drop、truncate和delete的区别

    原文出处:http://blog.csdn.net/ws0513/article/details/49980547 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作 ...

  10. How to use Nissan consult 3 plus to check, make key and program?

    How to use Nissan consult 3 plus to test Nissan? Firstly: get one particular Nissan consult 3 plus. ...