1、使用python读取依据生成的xml文件,添加样式表,最中生成一个html文件

2025-01-08 16:20:08
推荐回答(1个)
回答1:

#coding=utf8

# 引入要用到的xml解析库 这里我们用比较轻量级的minidom就行了
import xml.dom.minidom

# 定义一个html输出模板
# 后面我们只是要把这段html中的学生数据部分()换成xml中读到的数据
template = """


    
        学生信息
    
    


"""

# 读取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 = "%s%s%s%s" % (sid, name, sex, specialty)
    # 将这一行数据添加到总数据中
    student_trs += student_tr

# 替换模板的为我们上面所得到的html数据
html = template.replace("", student_trs)

# 输入html结果到 output.html
open("output.html", "w").write(html)


# PS:你提供的xml数据有问题,确实了一个标记
# 正确的xml应该如下
"""


    
        
            <姓名>三
            <性别>男
            <专业>计算机
        
    


"""