利用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 基础学习教程
Feb 08 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
Python3字符串学习教程
Aug 20 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
利用信号如何监控Django模型对象字段值的变化详解
Nov 27 Python
Python简单实现控制电脑的方法
Jan 22 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 Python
Pygame Time时间控制的具体使用详解
Nov 17 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
python3处理word文档实例分析
2020/12/01 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
县级文明单位申报材料
2014/05/23 职场文书
设备管理实施方案
2014/05/31 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
购房个人委托书范本
2014/10/11 职场文书
颐和园的导游词
2015/01/30 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python