day015--python模塊學習之xml模塊

来源:https://www.cnblogs.com/june-L/archive/2019/10/08/11638440.html

xml即可擴展標記語言,它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 本文主要學習的ElementTree是python的XML處理模塊,它提供了一個輕量級的對象模型。在使用ElementTree模塊時,需要import xml.etree.ElementTre ...


xml即可擴展標記語言,它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。

本文主要學習的ElementTree是python的XML處理模塊,它提供了一個輕量級的對象模型。在使用ElementTree模塊時,需要import xml.etree.ElementTree的操作。ElementTree表示整個XML節點樹,而Element表示節點數中的一個單獨的節點。

XML示例一:使用XML讀取本地的first.xml文件,並解析數據

以下是first.xml文件的內容

 1 <data>
 2     <country name="Liechtenstein">
 3         <rank updated="yes">2</rank>
 4         <year>2023</year>
 5         <gdppc>14110</gdppc>
 6         <neighbor direction="E" name="Austria"/>
 7         <neighbor direction="W" name="switzeriand"/>
 8     </country>
 9     <country name="Singapore">
10         <rank updated="yes">5</rank>
11         <year>2026</year>
12         <gdppc>59900</gdppc>
13         <neighbor direction="N" name="Malaysia"/>
14     </country>
15     <country name="Faname">
16         <rank updated="yes">69</rank>
17         <year>2019</year>
18         <gdppc>13360</gdppc>
19         <neighbor direction="W" name="Costa Rica"/>
20         <neighbor direction="E" name="Colombia"/>
21     </country>        
22 </data>
View Code

python代碼實現:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 """
 4 使用XML讀取本地的first.xml文件,並解析數據
 5 """
 6 from xml.etree import ElementTree as ET
 7 
 8 root = ET.XML(open("first.xml", "r", encoding='utf-8').read())  #讀取本地的first.xml文件,解析字元串
 9 
10 #通過迴圈讀取子節點的內容
11 for node in root:
12     print(node.tag, node.attrib, node.find("year").text)
View Code

python實現讀取first.xml文件並解析的結果:

 

XML示例二:通過.parse()方式打開文件,可以實現修改文件內容

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 #打開並解析文件內容
 5 from xml.etree import ElementTree as ET
 6 
 7 tree = ET.parse("first.xml")
 8 root = tree.getroot()  #通過.getroot()獲取根節點
 9 for node in root.iter('year'):  #通過.iter()迭代找到指定的子節點
10     new_year = int(node.text) + 1
11     node.text = str(new_year)
12     node.set('name', 'YY')  #通過.set()給year節點添加一個Name屬性
13     #del node.attrib['name']  通過.attrib[]可刪除指定的屬性
14     head = root.find('gdppc')  # 獲取節點
15     root.remove(head)                # 刪除節點
16 
17 #通過.write()將修改的內容從記憶體中寫入文件
18 tree.write("first.xml")
View Code

 

示例三:創建xml文檔

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 from xml.etree import ElementTree as ET
 5 
 6 #創建根節點
 7 new_xml = ET.Element("namelist")
 8 
 9 #在根節點下創建子節點1
10 name1 = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"})
11 #在name1子節點下再創建孫節點
12 age1 = ET.SubElement(name1, "age", attrib={"checked": "no"})
13 sex1 = ET.SubElement(name1, "sex")
14 sex1.text = '1'
15 
16 #在根節點下創建子節點2
17 name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"})
18 age2 = ET.SubElement(name2, "age")
19 age2.text = '20'
20 
21 #生成文檔對象
22 et = ET.ElementTree(new_xml)
23 et.write("new_xml.xml", encoding='utf-8', xml_declaration=True)
View Code

創建xml文檔實現的結果:

 


您的分享是我們最大的動力!

更多相關文章
  • 在學習Python的是後遇到點小問題,記錄下來以後忘了再來看看。 一. python2 和python3在繼承父類的時候是不同的。super() 是一個特殊的函數,幫助Python將父類和子類關聯起來。在Python3中,直接使用如下代碼: Python3 在Python2中有兩種方法: 第一種 第 ...
  • Python 入門 之 反射 通過字元串操作對象的屬性和方法 對象的角度使用反射 類的角度使用反射 當前模塊使用反射 其他模塊使用反射 反射的應用場景 ...
  • ``` include int main(void) { int arr[10]={5,4,7,9,2,3,1,6,10,8}; //定義一個位排序的數組 int i; //定義迴圈次數 int n = 0; //定義排序次數 int length=10; //定義數組長度 while(n arr[ ...
  • 一、random模塊 random模塊是用來生成隨機數的。 練習:生成隨機驗證碼 import random def v_code(): code = '' for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90 ...
  • 介面表示一種能力,實現了一個介面,即擁有一種能力。 BeanDefinition與Bean的關係, 就好比類與對象的關係. 類在spring的數據結構就是BeanDefinition.根據BeanDefinition得到的對象就是我們需要的Bean. 我認為理解Bean與BeanDefinition ...
一周排行
  • 一、背景 代碼實例:https://gitee.com/D_C_L/CurtainEtcAOP.git我們實際系統中有很多操作,是不管做多少次,都應該產生一樣的效果或返回一樣的結果。 例如: 1. 前端重覆提交選中的數據,應該後臺只產生對應這個數據的一個反應結果。 2. 我們發起一筆付款請求,應該只 ...
  • 關鍵字:流程未來節點處理人 工作流快速開發平臺 工作流流設計 業務流程管理 asp.net 開源工作流 業務背景:一個流程在啟動起來後,是可以對一些節點計算出來處理人是誰,流程的走向。對於另外一些節點處理人有可能需要相關的人員調整的。在一些審批的環境下,需要把能夠計算出來的節點處理人在發起時計算出來... ...
  • 簡述 我們做軟體工作的雖然每天都離不開網路,可網路協議細節卻不是每個人都會接觸和深入瞭解。我今天就來和大家一起學習下Socket,並寫一個簡單的聊天程式。 一些基礎類 首先我們每天打開瀏覽器訪問網頁信息都是使用的HTTP/HTTPS協議,而HTTP是通過的TCP建立的連接。TCP底層又是通過的Soc ...
  • 點這裡進入ABP進階教程目錄 在功能按鈕區增加一個自定義按鈕 - Add(創建課程) 添加按鈕 打開展示層(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Course查詢相關腳本 自帶按鈕已有五個我們再添加一 ...
  • 點這裡進入ABP進階教程目錄 我們嘗試在新增/編輯界面增加一個下拉框用來代替輸入框編輯Status 添加實體 打開領域層(即JD.CRS.Core)的Entitys目錄 //用以存放實體對象添加一個類StatusCode.cs //狀態信息 更新模型 更新查詢視圖模型 打開展示層(即JD.CRS.W ...
  • 在項目視圖中,找到-》輸出 視窗,在視窗中選擇ASP.NET Core Web伺服器,調試項目即可看到執行的sql語句 ...
  • 前言: 通過Fiddler抓取瀏覽器請求數據,相信大家已經都會用了,我們知道Fiddler是通過在本機計算器添加一個預設的代理伺服器來實現的抓包數據的,埠號為:8888。 其實當我們打開Fiddler的設置也可以看到: 然後查看本地計算器的網路代理設置: 基於上面的原理,Fiddler就實現了經過 ...
  • 場景 Winform控制項-DevExpress18下載安裝註冊以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243 在上面已經實現DevExpress的安裝之後,拖拽一個TreeList,然後怎樣給 ...
  • 場景 Winform控制項-DevExpress18下載安裝註冊以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243 DevExpress的TreeList怎樣設置數據源,從實例入手: https:/ ...
  • 場景 在開發中,經常會有一些全局作用域的常量、欄位、屬性、方法等。 需要將這些設置為全局作用域保存且其實例唯一。 註: 博客主頁: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 霸道的程式猿 獲取編程相關電子書、教程推送與免費下載。 實現 首先新建一 ...
x