利用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跳出循环语句continue与break的区别
Aug 25 Python
Python中类的继承代码实例
Oct 28 Python
python直接访问私有属性的简单方法
Jul 25 Python
详解Python装饰器由浅入深
Dec 09 Python
Python编程之event对象的用法实例分析
Mar 23 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
Python运行DLL文件的方法
Jan 17 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
python3 re返回形式总结
Nov 20 Python
什么是Python装饰器?如何定义和使用?
Apr 11 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
BootStrap入门学习第一篇
2017/08/28 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Django实现学员管理系统
2019/02/26 Python
使用Python的turtle模块画国旗
2019/09/24 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
python 实现批量图片识别并翻译
2020/11/02 Python
Flask处理Web表单的实现方法
2021/01/31 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
八年级生物教学反思
2014/01/22 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
产品包装策划方案
2014/05/18 职场文书
求职信结尾怎么写
2014/05/26 职场文书
工商管理专业自荐信
2014/06/03 职场文书
大专学生求职自荐信
2014/07/06 职场文书
岗位安全生产责任书
2014/07/28 职场文书
世界名著读书笔记
2015/06/25 职场文书
房屋质量投诉书
2015/07/02 职场文书