亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python讀取xml文件方法解析

 更新時間:2020年08月04日 10:46:27   作者:蟲師  
這篇文章主要介紹了python讀取xml文件方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

  關于python讀取xml文章很多,但大多文章都是貼一個xml文件,然后再貼個處理文件的代碼。這樣并不利于初學者的學習,希望這篇文章可以更通俗易懂的教如何使用python來讀取xml文件。

什么是xml?

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

abc.xml

<?xml version="1.0" encoding="utf-8"?>
<catalog>
  <maxid>4</maxid>
  <login username="pytest" passwd='123456'>
    <caption>Python</caption>
    <item id="4">
      <caption>測試</caption>
    </item>
  </login>
  <item id="2">
    <caption>Zope</caption>
  </item>
</catalog>

Ok,從結構上,它很像我們常見的HTML超文本標記語言。但他們被設計的目的是不同的,超文本標記語言被設計用來顯示數(shù)據(jù),其焦點是數(shù)據(jù)的外觀。它被設計用來傳輸和存儲數(shù)據(jù),其焦點是數(shù)據(jù)的內容。

那么它有如下特征:

首先,它是有標簽對組成,<aa></aa>

標簽可以有屬性:<aaid='123'></aa>

標簽對可以嵌入數(shù)據(jù):<aa>abc</aa>

標簽可以嵌入子標簽(具有層級關系):

<aa>

<bb></bb>

</aa>

獲得標簽屬性

那么,下面來介紹如何用python來讀取這種類型的文件。

#coding=utf-8
import xml.dom.minidom

#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')

#得到文檔元素對象
root = dom.documentElement
print root.nodeName
print root.nodeValue
print root.nodeType
print root.ELEMENT_NODE

mxl.dom.minidom模塊被用來處理xml文件,所以要先引入。

xml.dom.minidom.parse()用于打開一個xml文件,并將這個文件對象dom變量。

documentElement用于得到dom對象的文檔元素,并把獲得的對象給root

每一個結點都有它的nodeName,nodeValue,nodeType屬性。

nodeName為結點名字。

nodeValue是結點的值,只對文本結點有效。

nodeType是結點的類型。catalog是ELEMENT_NODE類型

現(xiàn)在有以下幾種:

'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'

NodeTypes-有名常數(shù)

http://www.w3school.com.cn/xmldom/dom_nodetype.asp

獲得子標簽

現(xiàn)在要獲得catalog的子標簽以的標簽name

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>測試</caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>

對于知道元素名字的子元素,可以使用getElementsByTagName方法獲取:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>測試</caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>

如何區(qū)分相同標簽名字的標簽:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>測試</caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>

<caption>和<item>標簽不止一個如何區(qū)分?

#coding=utf-8
import xml.dom.minidom

#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')

#得到文檔元素對象
root = dom.documentElement

bb = root.getElementsByTagName('caption')
b= bb[2]
print b.nodeName

bb = root.getElementsByTagName('item')
b= bb[1]
print b.nodeName

root.getElementsByTagName('caption')獲得的是標簽為caption一組標簽,b[0]表示一組標簽中的第一個;b[2],表示這一組標簽中的第三個。

獲得標簽屬性值

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>測試</caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>

<login>和<item>標簽是有屬性的,如何獲得他們的屬性?

#coding=utf-8
import xml.dom.minidom

#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')

#得到文檔元素對象
root = dom.documentElement

itemlist = root.getElementsByTagName('login')
item = itemlist[0]
un=item.getAttribute("username")
print un
pd=item.getAttribute("passwd")
print pd

ii = root.getElementsByTagName('item')
i1 = ii[0]
i=i1.getAttribute("id")
print i

i2 = ii[1]
i=i2.getAttribute("id")
print i

getAttribute方法可以獲得元素的屬性所對應的值。

獲得標簽對之間的數(shù)據(jù)

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>測試</caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>

<caption>標簽對之間是有數(shù)據(jù)的,如何獲得這些數(shù)據(jù)?

獲得標簽對之間的數(shù)據(jù)有多種方法,

方法一

#coding=utf-8
import xml.dom.minidom

#打開xml文檔
dom = xml.dom.minidom.parse('abc.xml')

#得到文檔元素對象
root = dom.documentElement

cc=dom.getElementsByTagName('caption')
c1=cc[0]
print c1.firstChild.data

c2=cc[1]
print c2.firstChild.data

c3=cc[2]
print c3.firstChild.data

firstChild屬性返回被選節(jié)點的第一個子節(jié)點,.data表示獲取該節(jié)點人數(shù)據(jù)。

方法二

#coding=utf-8
from xml.etree import ElementTree as ET
per=ET.parse('abc.xml')
p=per.findall('./login/item')

for oneper in p:
  for child in oneper.getchildren():
    print child.tag,':',child.text


p=per.findall('./item')

for oneper in p:
  for child in oneper.getchildren():
    print child.tag,':',child.text

方法二有點復雜,所引用模塊也與前面的不一樣,findall用于指定在哪一級標簽下開始遍歷。

getchildren方法按照文檔順序返回所有子標簽。并輸出標簽名(child.tag)和標簽的數(shù)據(jù)(child.text)

其實,方法二的作用不在于此,它核心功能是可以遍歷某一級標簽下的所有子標簽。

到此這篇關于python讀取xml文件方法解析的文章就介紹到這了,更多相關python讀取xml文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用Python NumPy庫繪制漸變圖案

    使用Python NumPy庫繪制漸變圖案

    NumPy(Numerical Python)是Python的一種開源的數(shù)值計算擴展。這種工具可用來存儲和處理大型矩陣。但其實NumPy還可以繪制圖畫,本文將為大家介紹如何通過NumPy繪制彩色圖畫,感興趣的小伙伴可以了解一下
    2021-12-12
  • 使用python將微信image下.dat文件解密為.png的方法

    使用python將微信image下.dat文件解密為.png的方法

    這篇文章主要介紹了使用python將微信image下.dat文件解密為.png的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Python實現(xiàn)上下文管理器的示例代碼

    Python實現(xiàn)上下文管理器的示例代碼

    這篇文章主要為大家詳細介紹了Python中實現(xiàn)上下文管理器的具體方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-07-07
  • Python字典的基本用法實例分析【創(chuàng)建、增加、獲取、修改、刪除】

    Python字典的基本用法實例分析【創(chuàng)建、增加、獲取、修改、刪除】

    這篇文章主要介紹了Python字典的基本用法,結合具體實例形式分析了Python字典的創(chuàng)建、增加、獲取、修改、刪除等基本操作技巧與注意事項,需要的朋友可以參考下
    2019-03-03
  • Python進階-函數(shù)默認參數(shù)(詳解)

    Python進階-函數(shù)默認參數(shù)(詳解)

    下面小編就為大家?guī)硪黄狿ython進階-函數(shù)默認參數(shù)(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 利用Python實現(xiàn)網站自動簽到

    利用Python實現(xiàn)網站自動簽到

    小五收藏了一些論壇網站,經常需要自己登錄簽到,以此來獲得積分金幣等等。但天天手動太容易忘了這件事啦。畢竟我們都會用python了,那就可以使用Selenium操作,接下來就和大家講講如何利用Python實現(xiàn)網站自動簽到
    2022-08-08
  • Python使用pyinstaller實現(xiàn)學生管理系統(tǒng)流程

    Python使用pyinstaller實現(xiàn)學生管理系統(tǒng)流程

    pyinstaller是一個非常簡單的打包python的py文件的庫,下面這篇文章主要給大家介紹了關于Python?Pyinstaller庫安裝步驟以及使用方法的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • python3從網絡攝像機解析mjpeg http流的示例

    python3從網絡攝像機解析mjpeg http流的示例

    這篇文章主要介紹了python3從網絡攝像機解析mjpeg http流的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • 跟老齊學Python之不要紅頭文件(1)

    跟老齊學Python之不要紅頭文件(1)

    紅頭文件,是某國特別色的東西,在python里不需要,python里要處理的是計算機中的文件,包括文本的、圖片的、音頻的、視頻的等等,還有不少沒見過的擴展名的,文件,在python中,是一種對象,就如同已經學習過的字符串、數(shù)字等一樣。
    2014-09-09
  • Python入門教程(三十三)Python的字符串格式化

    Python入門教程(三十三)Python的字符串格式化

    這篇文章主要介紹了Python入門教程(三十三)Python的字符串格式化,為了確保字符串按預期顯示,我們可以使用 format()方法對結果進行格式化,需要的朋友可以參考下
    2023-05-05

最新評論