利用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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
Pyramid添加Middleware的方法实例
Nov 27 Python
Python获取邮件地址的方法
Jul 10 Python
python开发之文件操作用法实例
Nov 13 Python
python处理“
Jun 10 Python
python使用递归的方式建立二叉树
Jul 03 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
利用Python多线程实现图片下载器
Mar 25 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
第八节 访问方式 [8]
2006/10/09 PHP
php 归并排序 数组交集
2011/05/10 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
Vue组件化开发思考
2018/02/02 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
使用python分析git log日志示例
2014/02/27 Python
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
Python ORM编程基础示例
2020/02/02 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
python实现简单颜色识别程序
2020/02/19 Python
python Tornado框架的使用示例
2020/10/19 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
小学英语教学反思案例
2014/02/04 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
工作年限证明模板
2015/06/15 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
python b站视频下载的五种版本
2021/05/27 Python
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android