利用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 sys.argv用法实例
May 28 Python
python实现数独算法实例
Jun 09 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
Python自动发邮件脚本
Mar 31 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
python将图片转为矢量图的方法步骤
Mar 30 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
javascript 写类方式之七
2009/07/05 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
python中input()与raw_input()的区别分析
2016/02/27 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python递归函数特点及原理解析
2020/03/04 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
Python3实现飞机大战游戏
2020/04/24 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
小学安全教育材料
2014/02/17 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
农村葬礼主持词
2014/03/31 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS