日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

第五周-第11章节-Python3.5-内置模块详解之Xml模块

發(fā)布時(shí)間:2025/7/14 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五周-第11章节-Python3.5-内置模块详解之Xml模块 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python XML操作

XML(可擴(kuò)展性標(biāo)記語(yǔ)言)是一種非常常用的文件類型,主要用于存儲(chǔ)和傳輸數(shù)據(jù)。在編程中,對(duì)XML的操作也非常常見(jiàn)。

本文根據(jù)python庫(kù)文檔中的xml.etree.ElementTree類來(lái)進(jìn)行介紹XML的解析:https://docs.python.org/3.5/library/xml.etree.elementtree.html?

BTW,xml.etree.cElementTree模塊從3.3以后就被棄用了.

XML格式

首先,來(lái)看一下XML所包含的元素類型

1. 標(biāo)簽 <tag>

2. 屬性 <tag ?name="attribute">

3. 數(shù)據(jù) <data>1<data>

?例如 xml段:

<?xml version="1.0"?> <data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country> </data>

?

XML操作

  • 讀取

#從變量讀取,參數(shù)為XML段,返回的是一個(gè)根Element對(duì)象 root = ET.fromstring(country_data_as_string)#從xml文件中讀取,用getroot獲取根節(jié)點(diǎn),根節(jié)點(diǎn)也是Element對(duì)象 tree = ET.parse('file.xml') root = tree.getroot()
  • 訪問(wèn)

    • 訪問(wèn)Element對(duì)象的標(biāo)簽、屬性和值
tag = element.tag attrib = element.attrib value = element.text
    • 訪問(wèn)子節(jié)點(diǎn)
#打印根節(jié)點(diǎn)的標(biāo)簽和屬性,獲取 for child in root:print(child.tag, child.attrib)
  • 查找操作

    • Element元素迭代子元素:Element.iter("tag"),可以羅列該節(jié)點(diǎn)所包含的所有其他節(jié)點(diǎn)(element對(duì)象)
#打印根節(jié)點(diǎn)中所有的neighbor對(duì)象的name屬性 for neighbor in root.iter('neighbor'):print(neighbor.attrib['name'])
    • Element.findall("tag"):查找當(dāng)前元素為“tag”的直接子元素
#findall只能用來(lái)查找直接子元素,不能用來(lái)查找rank,neighbor等element for country in root.findall('country'):rank = country.find('rank').textname = country.find('rank').textneig = country.find('neighbor').attribprint(rank, name,neig)
    • Element.find("tag"):查找為tag的第一個(gè)直接子元素
#返回第一個(gè)tag為country的element,如沒(méi)有,返回None firstCountry = root.find("country") print(firstCountry)
  • 創(chuàng)建xml文件

__author__ = 'xua'import xml.etree.ElementTree as ET #創(chuàng)建根節(jié)點(diǎn) a = ET.Element("root") #創(chuàng)建子節(jié)點(diǎn),并添加屬性 b = ET.SubElement(a,"sub1") b.attrib = {"name":"name attribute"} #創(chuàng)建子節(jié)點(diǎn),并添加數(shù)據(jù) c = ET.SubElement(a,"sub2") c.text = "test"#創(chuàng)建elementtree對(duì)象,寫文件 tree = ET.ElementTree(a) tree.write("test.xml")

創(chuàng)建的新文件內(nèi)容為:<root><sub1 name="name attribute" /><sub2>test</sub2></root>

  • 修改XML文件

    • ElementTree.write("xmlfile"):更新xml文件
    • Element.append():為當(dāng)前element對(duì)象添加子元素(element)
    • Element.set(key,value):為當(dāng)前element的key屬性設(shè)置value值
    • Element.remove(element):刪除為element的節(jié)點(diǎn)
#讀取待修改文件 updateTree = ET.parse("test.xml") root = updateTree.getroot() #創(chuàng)建新節(jié)點(diǎn)并添加為root的子節(jié)點(diǎn) newEle = ET.Element("NewElement") newEle.attrib = {"name":"NewElement","age":"20"} newEle.text = "This is a new element" root.append(newEle)#修改sub1的name屬性 sub1 = root.find("sub1") sub1.set("name","New Name")#修改sub2的數(shù)據(jù)值 sub2 = root.find("sub2") sub2.text = "New Value"#寫回原文件 updateTree.write("test.xml")

更新完的文件為:<root><sub1 name="New Name" /><sub2>New Value</sub2><NewElement age="20" name="NewElement">This is a new element</NewElement></root>

?

總結(jié)

?XML的操作比較常見(jiàn),當(dāng)然也有很多第三方的庫(kù)可以使用,所需要做的操作無(wú)非就是常用的讀寫xml文件、元素節(jié)點(diǎn)的增刪改查,大家還可以在python官方文檔上學(xué)習(xí)更多的操作。

轉(zhuǎn)載于:https://www.cnblogs.com/pcjbk/p/11042740.html

總結(jié)

以上是生活随笔為你收集整理的第五周-第11章节-Python3.5-内置模块详解之Xml模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。