#?引入要用到的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>
"""