python的XML處理模組ElementTree

來源:互聯網
上載者:User

標籤:有一個   http   list集合   1.0   UI   coding   存在   ati   alt   

ElementTree是python的XML處理模組,它提供了一個輕量級的物件模型。它在Python2.5以後成為Python標準庫的一部分,但是Python2.4之前需要單獨安裝。在使用ElementTree模組時,需要import xml.etree.ElementTree的操作。ElementTree表示整個XML節點樹,而Element表示節點數中的一個單獨的節點。
構建XML檔案
ElementTree(tag),其中tag表示根節點,初始化一個ElementTree對象。 Element(tag, attrib={}, **extra)函數用來構造XML的一個根節點,其中tag表示根節點的名稱,attrib是一個可選項,表示節點的屬性。 SubElement(parent, tag, attrib={}, **extra)用來構造一個已經存在的節點的子節點 Element.text和SubElement.text表示element對象的額外的內容屬性,Element.tag和Element.attrib分別表示element對象的標籤和屬性。 ElementTree.write(file, encoding=‘us-ascii‘, xml_declaration=None, default_namespace=None, method=‘xml‘),函數建立一個XML檔案,並且將節點數資料寫入XML檔案中。
#encoding=utf-8import xml.etree.ElementTree as ET#建立xml檔案def buildNewsXmlFile():        #設定一個新節點,並設定其標籤為root        root = ET.Element("root")        #在root下建立兩個子節點,設定其名稱分別為sina和chinabyte        sina = ET.SubElement(root, "sina")        chinabyte = ET.SubElement(root, "chinabyte")        #在sina下建立兩個子節點,設定其節點名稱分別為number和first        sina_number = ET.SubElement(sina, "number")        sina_number.text = "1"        sina_first = ET.SubElement(sina, "first")        sina_first.text = "http://roll.tech.sina.com.cn/internet_all/index_1.shtml"        #在chinabyte下建立兩個子節點,設定其節點名稱為number和first        chinabyte_number = ET.SubElement(chinabyte, "number")        chinabyte_number.text = "1"        chinabyte_first = ET.SubElement(chinabyte, "first")        chinabyte_first.text = "http://www.chinabyte.com/more/124566.shtml"        #將節點數資訊儲存在ElementTree中,並且儲存為XML格式檔案        tree = ET.ElementTree(root)        tree.write("urlfile.xml")


解析和修改XML檔案
ElementTree.parse(source, parser=None),將xml檔案載入並返回ElementTree對象。parser是一個可選的參數,如果為空白,則預設使用標準的XMLParser解析器。
ElementTree.getroot(),得到根節點。返回根節點的element對象。
Element.remove(tag),刪除root下名稱為tag的子節點
以下函數,ElementTree和Element的對象都包含。 find(match),得到第一個匹配match的子節點,match可以是一個標籤名稱或者是路徑。返回個element findtext(match,default=None),得到第一個配置的match的element的內容 findall(match),得到匹配match下的所有的子節點,match可以是一個標籤或者是路徑,它會返回一個list,包含匹配的elements的資訊 iter(tag),建立一個以當前節點為根節點的iterator。
這裡有一個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檔案的代碼
#解析Xml檔案def parseXmlFile(xml_name):        #將XMl檔案載入並返回一個ELementTree對象        tree = ET.parse(xml_name)        #得到第一個匹配sina標籤的Element對象        sina = tree.find("contry")        #得到sina的SubElement        for sub_tag in sina:                print sub_tag.text        #得到所有匹配sina標籤的Element對象的list集合        list_contry = tree.findall("contry")        for contry in list_contry:                for sub_tag in contry:                        print sub_tag.text#修改xml檔案        for rank in tree.iter(‘rank‘)        new_rank = int(rank.text)+1        rank.text = str(new_rank)        rank.set(‘updated‘, ‘yes‘)        tree.write(xml_name)
第一次的輸出是:1,2008,14100第二次的輸出是:1,2008,14100,4,2011,59900,68,2011,13600修改後的xml檔案為
<?xml version="1.0"?><data>    <country name="Liechtenstein">        <rank updated="yes">2</rank>        <year>2008</year>        <gdppc>141100</gdppc>        <neighbor name="Austria" direction="E"/>        <neighbor name="Switzerland" direction="W"/>    </country>    <country name="Singapore">        <rank updated="yes">5</rank>        <year>2011</year>        <gdppc>59900</gdppc>        <neighbor name="Malaysia" direction="N"/>    </country>    <country name="Panama">        <rank updated="yes">69</rank>        <year>2011</year>        <gdppc>13600</gdppc>        <neighbor name="Costa Rica" direction="W"/>        <neighbor name="Colombia" direction="E"/>    </country></data>

python的XML處理模組ElementTree

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.