天天看點

python讀取xml檔案

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

什麼是xml?

xml即可擴充标記語言,它可以用來标記資料、定義資料類型,是一種允許使用者對自己的标記語言進行定義的源語言。

abc.xml

那麼它有如下特征:

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

标簽可以有屬性:<aa id=’123’></aa>

标簽對可以嵌入資料:<aa>abc</aa>

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

<aa>

     <bb></bb>

</aa>

獲得标簽屬性

那麼,下面來介紹如何用python來讀取這種類型的檔案。

mxl.dom.minidom 子產品被用來處理xml檔案,是以要先引入。

xml.dom.minidom.parse() 用于打開一個xml檔案,并将這個檔案對象dom變量。

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

每一個結點都有它的nodename,nodevalue,nodetype屬性。

nodename為結點名字。

nodevalue是結點的值,隻對文本結點有效。

nodetype是結點的類型。catalog是element_node類型

現在有以下幾種:

'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 - 有名常數

<a href="http://www.w3school.com.cn/xmldom/dom_nodetype.asp">http://www.w3school.com.cn/xmldom/dom_nodetype.asp</a>

獲得子标簽

現在要獲得catalog的子标簽以的标簽name

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

如何區分相同标簽名字的标簽:

&lt;caption&gt;和&lt;item&gt;标簽不止一個如何區分?

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

獲得标簽屬性值

&lt;login&gt;和&lt;item&gt;标簽是有屬性的,如何獲得他們的屬性?

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

獲得标簽對之間的資料

&lt;caption&gt;标簽對之間是有資料的,如何獲得這些資料?

獲得标簽對之間的資料有多種方法,

方法一

firstchild 屬性傳回被選節點的第一個子節點,.data表示擷取該節點人資料。

方法二

方法二有點複雜,所引用子產品也與前面的不一樣,findall用于指定在哪一級标簽下開始周遊。

getchildren方法按照文檔順序傳回所有子标簽。并輸出标簽名(child.tag)和标簽的資料(child.text)

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