使用Python解析XML資料(一)

2021-10-03 08:59:05 字數 3079 閱讀 4379

什麼是xml?

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

<?xml version="1.0" encoding="utf-8"?>

4python

測試

zope

從結構上,它很像我們常見的html超文字標記語言。但他們被設計的目的是不同的,超文字標記語言被設計用來顯示資料,其焦點是資料的外觀。它被設計用來傳輸和儲存資料,其焦點是資料的內容。

它有如下特徵

首先,它是有標籤對組成,

標籤可以有屬性:

標籤對可以嵌入資料:abc

標籤可以嵌入子標籤(具有層級關係)

獲得標籤屬性

#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是結點的型別,有以下型別:

現在有以下幾種:

nodetypes - 有名常數

<?xml version="1.0" encoding="utf-8"?>

4python

測試

zope

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

#coding=utf-8

import xml.dom.minidom

dom = xml.dom.minidom.parse('abc.xml')#開啟xml文件

#得到文件元素物件

root = dom.documentelement

#在dom樹中查詢指定元素

maxid_node = root.getelementsbytagname('maxid')[0]

<?xml version="1.0" encoding="utf-8"?>

4python

測試

zope

標籤不止乙個如何區分?

#coding=utf-8

import xml.dom.minidom

#開啟xml文件

dom = xml.dom.minidom.parse('abc.xml')

#得到文件元素物件

root_node = dom.documentelement

caption_nodes= root.getelementsbytagname('caption')

caption_node1= caption_nodes[0]

print caption_node1.nodename

item_nodes= root_node.getelementsbytagname('item')

item_node1= item_nodes[0]

print item_node1.nodename

root_node.getelementsbytagname('caption')獲得的是標籤為caption 一組標籤,nodes[0]表示一組標籤中的第乙個;nodes2] ,表示這一組標籤中的第三個。

<?xml version="1.0" encoding="utf-8"?>

4python

測試

zope

和標籤是有屬性的,如何獲得他們的屬性?

#coding=utf-8

import xml.dom.minidom

#開啟xml文件

dom = xml.dom.minidom.parse('abc.xml')

#得到文件元素物件

root_node = dom.documentelement

login_nodes= root_node.getelementsbytagname('login')

login_node= login_nodes[0]

username=login_node.getattribute("username")

print username

pwd=login_node.getattribute("passwd")

print pwd

item_nodes= root_node.getelementsbytagname('item')

item_node1= item_nodes[0]

id1=item_node1.getattribute("id")

print id1

item_node2= item_nodes[1]

id2=item_node2.getattribute("id")

print id2

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

使用SAXReader解析xml資料

2 讀取xml資料 saxreader可以通過多種方式讀取xml資料,並返回document格式的物件。3 解析xml資料 讀取到document物件後,我們使用getrootelement 方法獲取根元素,返回的是乙個element物件。4 獲取子元素資料 獲取根元素後,便可以一層一層的去獲取他的...

python使用sax實現xml解析

之前在使用xml解析的時候,在網上搜了很多教程,最終沒有能按照網上的教程實現需求。所以呢,只好自己去看原始碼,在sax的 init py下看到這麼一段 1 def parse source,handler,errorhandler errorhandler 2 parser make parser ...

xml解析資料

import gdataxmlnode.h 引第三方標頭檔案 import jsonkit.h 引第三方標頭檔案 inte ce rootviewcontroller uiviewcontroller 協議 property nonatomic,retain nsmutablearray allst...