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显示的样式大概如下():
展开
 我来答
波尽天下
推荐于2016-08-22 · TA获得超过834个赞
知道小有建树答主
回答量:202
采纳率:66%
帮助的人:223万
展开全部
#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>
"""
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式