利用python将xml文件解析成html文件的实现方法


Posted in Python onDecember 22, 2017

功能就是题目所述,我的python2.7,装在windows环境,我使用的开发工具是wingide 6.0

1、首先是我设计的简单的一个xml文件,也就是用来解析的源文件

下面是这个文件website.xml内容:

<website>
<page name="index" title="fuckyou">
	<h1>welcome to</h1>
	<p>this is a moment</p>
<ul>
<li><a href="shouting.html" rel="external nofollow" >Shouting</a></li>
</ul>
</page>
<page name="shouting" title="mother">
<h1>My name is likeyou</h1>
</page>
</website>

解释:page就是对应一个html文件,这里有两个page也就是要解析成两个html文件,然后分别是index.html和shouting.html,其中在index.html中通过<a>链接转到shouting.html文件中显示shouting.html文件的内容

2、python代码实现解析(xmltest.py)

#!D:\Python27\python.exe
#-*- coding:utf-8 -*-
from xml.sax import parse
from xml.sax.handler import ContentHandler
class PageCreate(ContentHandler):
 pagethrough = False
 def startElement(self, name, attrs):
  if name == 'page':
   self.pagethrough = True
   self.out = open(attrs['name'] + '.html', 'w')
   self.out.write('<html>\n<head>\n')
   self.out.write('<title>%s</title>\n' %(attrs['title']))
   self.out.write('</head>\n<body>\n')
  elif self.pagethrough:
   self.out.write('<')
   self.out.write(name)
   for str,val in attrs.items():
    self.out.write(' %s="%s"' %(str, val))
   self.out.write('>') 
   
 def endElement(self, name):
  if name == 'page':
   self.out.write('</body>\n</html>')
   self.pagethrough = False
   self.out.close()
  if self.pagethrough:
   self.out.write('<')
   self.out.write('/' + name)
   self.out.write('>')
   
 def characters(self, content):
  if self.pagethrough:
   self.out.write(content)
 
parse('D:\\pyproject\\file\\website.xml', PageCreate())

代码解释:

使用xml.sax解析方法调用parse方法来解析,自己创建了一个解析类,继承了ContentHandler,在里面分别重写了startelement和endelement方法还有charactors方法,startelement方法是当找到xml文件中的开头标签时调用,如<a>、<h1>,passthrough变量是为了判断当前是否在page标签里面,true表示在page标签里面,就是属于当前page页面的元素,因为xml.sax是关注标签的,他不会管你是否在当前哪个page里面,然后后面的代码都容易理解,就是添加html的开头标签<html><head><body>等,注意,attrs储存的是标签的属性,例如<page>里面name="shouting",name="index",那么就attrs就储存这name="shouting"这个东西,从而在attrs里面获取name属性里面的shouting和index作为html文件的文件名,同理<a>里面的href=……也是通过这个数据获取,分别存在str和val变量中,并且通过write写进文件。

然后endelement就是当解析到</h1>这类的结尾标签的时候调用,添加结尾的标签,如果是文件结尾,那么就是</page>,这时候就把</html>、</body>这些html的结尾标签添加进去,否则,就是page页面里面的元素结尾标签

characters就是将开头标签于结尾标签之间找到的字符串添加进去

最后我们把python代码运行起来之后就可以看到在同一目录下生成了两个html文件,分别是shouting.html和index.html,打开index.html就可以看到一个叫做“shouting”的链接,点过去就打开了shouting.html

以上这篇利用python将xml文件解析成html文件的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
Python实现抓取页面上链接的简单爬虫分享
Jan 21 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
django如何连接已存在数据的数据库
Aug 14 Python
python求质数的3种方法
Sep 28 Python
在python 中实现运行多条shell命令
Jan 07 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
python实现数据预处理之填充缺失值的示例
Dec 22 #Python
NetworkX之Prim算法(实例讲解)
Dec 22 #Python
Python实现控制台中的进度条功能代码
Dec 22 #Python
Python中的探索性数据分析(功能式)
Dec 22 #Python
Python反射用法实例简析
Dec 22 #Python
Python文本特征抽取与向量化算法学习
Dec 22 #Python
用Python实现KNN分类算法
Dec 22 #Python
You might like
php中计算程序运行时间的类代码
2012/11/03 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
php自定义apk安装包实例
2014/10/20 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
php格式文件打开的四种方法
2018/02/24 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
jQuery 对象中的类数组操作
2009/04/27 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python随机模块random使用方法详解
2020/02/14 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
学院书画协会部门职责
2013/11/28 职场文书
企业统计员岗位职责
2013/12/13 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
工作个人的自我评价
2014/01/14 职场文书
妇产医师自荐信
2014/01/29 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
销售经理工作检讨书
2015/02/19 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫
JS实现数组去重的11种方法总结
2022/04/04 Javascript
Redis 限流器
2022/05/15 Redis