1、使用python读取依据生成的xml文件,添加样式表,最中生成一个html文件
xml文件:<?xmlversion="1.0"encoding="UTF-8"?><person><students><studentid="20140711"><姓名...
xml文件:
<?xml version="1.0" encoding="UTF-8"?><person> <students> <student id="20140711"> <姓名>三</姓名> <性别>男</性别> <专业>计算机</专业> </student> </person>
html显示的样式大概如下(): 展开
<?xml version="1.0" encoding="UTF-8"?><person> <students> <student id="20140711"> <姓名>三</姓名> <性别>男</性别> <专业>计算机</专业> </student> </person>
html显示的样式大概如下(): 展开
1个回答
展开全部
#coding=utf8
# 引入要用到的xml解析库 这里我们用比较轻量级的minidom就行了
import xml.dom.minidom
# 定义一个html输出模板
# 后面我们只是要把这段html中的学生数据部分(<student_trs/>)换成xml中读到的数据
template = """
<html>
<table border="1" style="width: 100%;text-align: center;">
<tr>
<td colspan="4" >学生信息</td>
</tr>
<student_trs/>
</table>
</html>
"""
# 读取xml文档内容,这里假设是a.xml
dom = xml.dom.minidom.parse('a.xml')
# 获取xml中的所有student节点
student_nodes = dom.getElementsByTagName('student')
# 初始化student_trs为空
student_trs = ""
# 遍历每一条学生信息
for node in student_nodes:
# getAttribute 用户获取节点的属性,得到id属性值即学号
# 因为xml解析后是Unicode编码的,所以这里要转成utf8编码,下面同理
sid = node.getAttribute("id").encode('utf-8')
# 获取所有子节点
children = node.childNodes
for child in children:
# 判断子节点的名字为 姓名、性别、专业 的话,就采集其对应文本
if child.nodeName.encode('utf-8') == "姓名":
# 使用 。childNodes[0].nodeValue 的方法得到节点的文本
name = child.childNodes[0].nodeValue.encode('utf-8')
if child.nodeName.encode('utf-8') == "性别":
sex = child.childNodes[0].nodeValue.encode('utf-8')
if child.nodeName.encode('utf-8') == "专业":
specialty = child.childNodes[0].nodeValue.encode('utf-8')
# 组成html中的一行学生数据
student_tr = "<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>" % (sid, name, sex, specialty)
# 将这一行数据添加到总数据中
student_trs += student_tr
# 替换模板的<student_trs/>为我们上面所得到的html数据
html = template.replace("<student_trs/>", student_trs)
# 输入html结果到 output.html
open("output.html", "w").write(html)
# PS:你提供的xml数据有问题,确实了一个</students>标记
# 正确的xml应该如下
"""
<?xml version="1.0" encoding="UTF-8"?>
<person>
<students>
<student id="20140711">
<姓名>三</姓名>
<性别>男</性别>
<专业>计算机</专业>
</student>
</students>
</person>
"""
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询