欲成這樣的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設置節點屬性的問題: