利用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 cookielib 登录人人网的实现代码
Dec 19 Python
python标准算法实现数组全排列的方法
Mar 17 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
python实现ping的方法
Jul 06 Python
解决DataFrame排序sort的问题
Jun 07 Python
Python多线程编程之多线程加锁操作示例
Sep 06 Python
python画微信表情符的实例代码
Oct 09 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
使用Python的开发框架Brownie部署以太坊智能合约
May 28 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python实现textrank关键词提取
2018/06/22 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
通信工程专业毕业生推荐信
2013/12/25 职场文书
大学生创业感言
2014/01/25 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL