首頁  >  文章  >  後端開發  >  python序列化功能之xml的詳細介紹

python序列化功能之xml的詳細介紹

高洛峰
高洛峰原創
2017-03-26 17:14:191611瀏覽

這篇文章主要為大家詳細介紹了python序列化功能之xml具有一定的參考價值,感興趣的小伙伴們可以參考一下

<diva_list>
    <diva name="hamasaki ayumi">
        <state flop="yes">1</state>
        <year>1978</year>
        <album_sales_volume>27804358</album_sales_volume>
        <album name="A song for xx" sn="1st"/>
        <album name="LOVEppears" sn="2nd"/>
    </diva>
    <diva name="koda kumi">
        <state flop="yes">2</state>
        <year>1982</year>
     <album_sales_volume>8273371</album_sales_volume>
        <album name="affection" sn="1st"/>
        <album name="grow into one" sn="2nd"/>
    </diva>
</diva_list>

上面是一段xml文本的示例,如果要對xml文字進行處理,需要導入一個模組。

import xml.etree.ElementTree as ET

#由於xml模組的名字太長,使用as給它取了一個別名,叫ET。

ET.parse() 從檔案中直接讀取xml文本,將xml文本解析成為xml樹物件。

tree =  ET.parse("diva.xml")

取得該xml樹的根節點。

root = tree.getroot()

取得根節點的標籤(名稱)。

root.tag

#遍歷xml文件

for child in root:

    print(child.tag, child.attrib)

    for i in child:

        print(i.tag,i.text)

注意!如果想取xml文字下的子節點,必須透過根節點去取,任何節點後面加上.tag都可以取到節點中的標籤名,任何節點加上.text都可以取到每個節點包含的內容,attrib 可以取到節點中標籤中存在的屬性。

#取得每個子節點的album_sales_volume標籤中的文字內容。

for i in root.iter("album_sales_volume"):

    print i.text

#如果要取得標籤內的屬性,直接把text改成attrib即可。

修改:

for node in root.iter('year'):

    new_year = int(node.text) + 1

    node. text = str(new_year) #修改內容

    node.set("flop","no") #修改標籤屬性。

tree.write("xmltest.xml")

刪除:

for country in root.findall('country'):

   rank = int(country.find('rank').text)

   if rank > 50:

     root.remove(country)

tree.write('output. xml')

root.findall() 用來從根節點開始查找,查找到指定名字的子節點。

root.remove()用來刪除一個節點。

產生xml文字。

import xml.etree.ElementTree as ET

new_xml = ET.Element("namelist")

name = ET.SubElement(new_xml,"name",attrib= {"enrolled":"yes"})

age = ET.SubElement(name,"age",attrib={"checked":"no"})

sex = ET. SubElement(name,"sex")

sex.text = '33'

name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"} )

age = ET.SubElement(name2,"age")

age.text = '19'

et = ET.ElementTree(new_xml) #產生文件對象

et.write("test.xml", encoding="utf-8",xml_declaration=True)

ET.dump(new_xml) #列印產生的格式

以上是python序列化功能之xml的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn