【Python】生成多級樹結構的xml文件


欲成這樣的xml結構

<?xml version="1.0" encoding="utf-8"?> <DOCUMENT content_method="full"> <item> <key>Key1</key> <display> <url>https://www.baidu.com/</url> <title>哈哈</title> </display> </item> </DOCUMENT> 

需要如下代碼:

#encoding:utf-8 ''' 根據一個給定的XML Schema,使用DOM樹的形式從空白文件生成一個XML。 ''' from xml.dom.minidom import Document doc = Document() #創建DOM文檔對象 DOCUMENT = doc.createElement('DOCUMENT') #創建根元素 DOCUMENT.setAttribute('content_method',"full")#設置命名空間 #DOCUMENT.setAttribute('xsi:noNamespaceSchemaLocation','DOCUMENT.xsd')#引用本地XML Schema doc.appendChild(DOCUMENT) ############item:Python處理XML之Minidom################ item = doc.createElement('item') #item.setAttribute('genre','XML') DOCUMENT.appendChild(item) key = doc.createElement('key') key_text = doc.createTextNode('Key1') #元素內容寫入 key.appendChild(key_text) item.appendChild(key) display = doc.createElement('display') item.appendChild(display) display_url = doc.createElement('url') display_title = doc.createElement('title') display_url_text = doc.createTextNode('https://www.baidu.com/') display_title_text = doc.createTextNode('哈哈') display.appendChild(display_url) display.appendChild(display_title) display_url.appendChild(display_url_text) display_title.appendChild(display_title_text) item.appendChild(display) ''' price = doc.createElement('price') price_text = doc.createTextNode('28') price.appendChild(price_text) item.appendChild(price) ''' ########### 將DOM對象doc寫入文件 f = open('tel.xml','w') #f.write(doc.toprettyxml(indent = '\t', newl = '\n', encoding = 'utf-8')) doc.writexml(f,indent = '\t',newl = '\n', addindent = '\t',encoding='utf-8') f.close() 

dom對象樹已經生成好了,我們可以調用dom的writexml()方法來將內容寫入文件中。writexml()方法語法格式為:
writexml(writer, indent, addindent, newl, encoding)

  • writer是文件對象
  • indent是每個tag前填充的字符,如:’ ‘,則表示每個tag前有兩個空格
  • addindent是每個子結點的縮近字符
  • newl是每個tag后填充的字符,如:’\n’,則表示每個tag后面有一個回車
  • encoding是生成的XML信息頭中的encoding屬性值,在輸出時minidom並不真正進行編碼的處理,如果你保存的文本內容中有漢字,則需要自已進行編碼轉換。
  • writexml方法是除了writer參數必須要有外,其余可以省略。

廖雪峰Python:
操作XML有兩種方法:DOM和SAX。DOM會把整個XML讀入內存,解析為樹,因此占用內存大,解析慢,優點是可以任意遍歷樹的節點。SAX是流模式,邊讀邊解析,占用內存小,解析快,缺點是我們需要自己處理事件。



作者:VeyronC
鏈接:https://www.jianshu.com/p/17386972a23b
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
 
另外:關於xml設置節點屬性的問題:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM