當前位置:成語大全網 - 新華字典 - 1、使用python讀取依據生成的xml文件,添加樣式表,最中生成壹個html文件

1、使用python讀取依據生成的xml文件,添加樣式表,最中生成壹個html文件

#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>

"""