① 如何用Python輸出漂亮的xml文件
最近要用Python處理一個xml文件。平時習慣了用xml.etree.ElementTree,結果發現此庫存在一些讓人無法忍受的缺點:
1. 無法處理comment和cdata
2. 輸出後的xml文件沒有換行,沒有縮進,十分難以閱讀
於是嘗試這用xml.dom.minidom,前兩個問題幾乎全部解決了。唯一讓人看著不爽的是minidom對於text的處理。比如,我期待的xml輸入如下:
[html] view plain
<pre name="code" class="html"><pre name="code" class="html"><root>
<host>192.168.0.1</host>
</root>
但是使用xml.dom.minidom.Document.writexml後,輸出的結果卻是這樣的:
[html] view plain
<root>
<host>
192.168.0.1
</host>
</root>
開始的時候,我考慮重寫Document.writexml函數,覺得太麻煩,有用牛刀殺雞之感。後來想想,其實自己的需求非常簡單,只是需要對Document的輸出結果做個二次處理即可。使用python的正則表達式庫就可以實現:
[python] view plain
def save_xml(self, file_name):
xml_str = self.m_dom.toprettyxml(indent=" ")
repl = lambda x: ">%s</" % x.group(1).strip() if len(x.group(1).strip()) != 0 else x.group(0)
pretty_str = re.sub(r'>\n\s*([^<]+)</', repl, xml_str)
open(file_name, 'w').write(pretty_str)
先將Document輸出到字元串,然後使用正則表達式將text中的空行去掉即可。
黑馬程序員的PYthon是國內最早開設的真正人工智慧課程。課程全面系統,緊跟時代潮流。
② python怎麼讀取xml文件
解析XML文件是處理XML數據的第一步。ET提供了兩種主要方式來解析XML文件:直接從文件解析或從字元串解析。
從文件解析:
這段代碼會載入example.xml文件,並獲取其根元素。
從字元串解析:
這段代碼會解析一個包含XML數據的字元串。
讀取、解析和獲取元素:
獲取了根元素後,你可以遍歷XML樹並獲取你感興趣的數據。
這段代碼會查找所有的元素,並列印出每個國家的名稱、排名和年份。
修改XML文件:
你可以修改XML樹的元素和屬性,然後將修改後的樹寫迴文件。
添加元素:這段代碼創建了一個新的元素,並將其添加到樹的根下,然後將修改後的樹保存到一個新文件。
修改和刪除元素:這段代碼展示了如何修改和刪除XML文件中的元素。
創建XML文件:
你可以從頭開始創建一個新的XML文件。
這段代碼創建了一個新的XML文檔,並將其保存到new.xml文件中。