XML(eXtensible Markup Language,可擴展標記語言)是一種用于描述結構化數據的文本文件格式。
它以標簽(tag)形式組織數據,具有自描述性和層級結構,適用于配置文件、數據交換、文檔存儲等場景。
幾乎所有編程語言都支持 XML 的解析與生成,同時 XML 也兼容多種標準(如 XHTML、SVG、RSS 等)。
一、XML 格式特點
XML 文件的擴展名通常為 .xml。
XML 文件主要特點包括:
(1)標簽結構
數據以 和 包圍形成樹狀結構,可嵌套。
(2)自描述性
每個標簽都可以說明其內容的含義。
(3)屬性(Attribute)
標簽可以包含屬性,例如 Alice 。
(4)層級關系
支持父子節點、兄弟節點及嵌套節點,表示復雜結構。
(5)編碼
推薦使用 UTF-8;在文件開頭可聲明 。
(6)注釋
使用 。
示例 XML 文件:
students>以上示例展示了 XML 的基本結構:根節點 下包含多個 子節點,每個 節點又包含 與 。
二、在 Python 中表示 XML 數據
(1)使用字符串與內存文件對象
當我們想在內存中操作 XML,而不立即寫入磁盤時,可以使用 .StringIO:
print(buf.read())StringIO 適用于測試、臨時存儲或從網絡請求中解析小型 XML 內容。
(2)使用字典/列表在內存中表示 XML 樹
在處理 XML 數據之前,通常先在內存中準備結構化數據。
示例:
print(students)這種結構便于后續生成 XML,每個字典對應一個 節點。
三、使用 xml.etree.ElementTree 解析與生成 XML
Python 標準庫(簡稱 ET)提供對 XML 的讀寫支持,能夠處理樹形結構、節點查找和屬性管理。
(1)生成 XML 文件
print("students.xml 文件已保存。")? ET.Element("tag") 創建節點。
? ET.SubElement(parent, "tag") 創建子節點并自動附加到父節點。
? tree.write() 可指定編碼與是否寫入 XML 聲明。
(2)讀取 XML 文件
print(sid, name, score)輸出結果:
3 Carol 90? .find() 查找單個子節點,.findall() 查找所有匹配子節點。
? .get("attr") 獲取節點屬性值。
? 節點文本通過 .text 獲取。
(3)修改與新增節點
print("students_updated.xml 已更新。")(4)防止 XML 注入(安全寫入)
在處理來自外部的數據時,避免直接寫入 XML 標簽內容,建議使用 xml.sax.saxutils.escape 對特殊字符進行轉義:
safe_name = escape(name) # 轉義為
這樣可防止 <、>、& 等字符破壞 XML 結構。
四、使用 Pandas 處理 XML 文件
從 1.3 起,提供了 read_xml 與 to_xml 方法,可方便地將 XML 與 DataFrame 相互轉換。
(1)讀取 XML 文件
需安裝必要的依賴:
pip install pandas lxml示例:
print(df)輸出:
2 3 Carol 90pandas 會自動解析節點標簽,將屬性或子節點轉換為列。
(2)篩選與統計數據
print("平均分:", avg_score)(3)將結果寫回 XML 文件
print("高分學生 XML 已保存。")五、綜合案例
以下示例展示了 XML 文件在數據分析中的完整生命周期:數據創建 → 存儲 → 讀取 → 處理 → 輸出。
top.to_xml("top_students.xml", index=False)運行結果:
平均分:91.0小結
XML 作為一種結構化數據格式,具有自描述性和層級結構特點,適用于多種數據場景。使用 Python 處理 XML 數據有兩種主要方法:一是使用標準庫 xml.etree.ElementTree 進行 XML 的解析、生成和修改,包括節點操作、屬性管理和安全寫入;二是利用 Pandas 庫的 read_xml 和 to_xml 方法實現 XML 與 DataFrame 的高效轉換,便于數據分析和處理。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.