Python 解析 XML 文件生成 HTML
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的几种方式
- xml.etree.ElementTree — The ElementTree XML API
- Does the Jinja2 templating language have the concept of 'here' (current directory)?
- 欢迎来到 Jinja2
- jinja2模板
Python 解析 XML 文件生成 HTML的更多相关文章
- 【TensorFlow】Python解析xml文件
最近在项目中使用TensorFlow训练目标检测模型,在制作自己的数据集时使用了labelimg软件对图片进行标注,产生了VOC格式的数据,但标注生成的xml文件标签值难免会产生个别错误造成程序无法跑 ...
- python 解析xml 文件: Element Tree 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- python 解析xml 文件: DOM 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- python 解析xml 文件: SAX方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
- Python解析xml文件遇到的编码解析的问题
使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...
- python 解析 XML文件
如下使用xml.etree.ElementTree模块来解析XML文件.ElementTree模块中提供了两个类用来完成这个目的: ElementTree表示整个XML文件(一个树形结构) Eleme ...
- [转载] python 解析xml 文件: SAX方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- python解析xml文件时使用ElementTree和cElementTree的不同点;iter
在python中,解析xml文件时,会选用ElementTree或者cElementTree,那么两者有什么不同呢? 1.cElementTree速度上要比ElementTree快,比较cElemen ...
随机推荐
- Mysql8.0.11安装以及注意事项
一.环境配置 首先在官网下载最新的mysql8.0.11数据库,解压到你需要放置的盘符最好不要有中文,然后新建MYSQL_HOME,参数为mysql解压后安装文件的bin文件路径如我的:变量名:MYS ...
- jQuery常用的取值或赋值的方法
$(selector).data(name) 从被取元素返回附加的数据 存在一个div标签:<div data-meeting="hi Tom"></div> ...
- 基于AOP注解实现业务功能的动态配置
一.导入jar包 <dependency><!-- 4.引入AOP--> <groupId>org.springframework.boot</groupId ...
- 学习笔记<1>技术体系结构
Android的系统架构采用了分层架构的思想,如上图所示.从上层到底层共包括四层,分别是 1.应用程序程序层 2.应用框架层 3.系统库和Android运行时 4.Linux内核. 每 ...
- linux常见运维题
linux运维题 一.填空题 1. 在Linux 系统 中,以文件方式访问设备 . (linux下一切都是文件) 2. Linux 内核引导时,从文件/etc/fstab中读取要加载的文件系统 . ( ...
- Echo团队团队展示
班级:软件工程1916|W 作业:团队作业第一次-团队展示 团队名称:Echo 课程目标:展示团队 成员信息 队员学号 队员姓名 个人博客地址 备注 221600418 黄少勇 http://www. ...
- skynet 报错 skynet 服务缺陷 Lua死循环
我的报错如下: 看起来是skynet中lua死循环,实际上,可能只是本地配置出了问题,比如,我的数据库连接不上了,因为我把别人的配置更新到我本地了,吗,mysql秘密不对 解决办法就是将配置文件中的, ...
- LoadLibrary加载动态库失败
[1]LoadLibrary加载动态库失败的可能原因以及解决方案: (1)dll动态库文件路径不对.此场景细分为以下几种情况: 1.1 文件路径的确错误.比如:本来欲加载的是A文件夹下的动态库a.dl ...
- 设计模式之Decorator(油漆工)(转)
Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这 ...
- MySQL存储引擎MyISAM与InnoDB区别总结整理
在MySQL的 可重复读隔离级别 中,是解决了幻读的读问题的. 1. MySQL默认存储引擎的变迁 在MySQL 5.5之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默 ...