Python語言解析xml檔案

2021-09-06 05:01:53 字數 3663 閱讀 2190

python

語言解析

xml檔案的常用的有兩種方式:

minidom方式解析xml

xml檔案以data.xml為例,具體操作如下:

data.xml:

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

儲存使用者的資訊

jordy

1234567820男

上網 功夫

3444367818男

功夫1.得到dom物件

dom是

document object model

的簡稱,它是以物件樹來表示乙個

xml。

import xml.dom.minidom

#得到dom

物件dom = xml.dom.minidom.parse("data.xml")

2.得到文件元素物件

#得到文件元素物件

root = dom.documentelement  #

這裡得到的是根節點

info

#列印根節點的

名字節點的值

節點型別

print

(root.nodename,

root.nodevalue,

root.nodetype)

節點的屬性:

每乙個節點都有它的

nodename

,nodevalue

,nodetype

屬性。nodename

為節點名字。

nodevalue

是節點的值,只對文字節點有效。

nodetype

是節點的型別,現在有以下幾種:

『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』

node.element_node == 1

node.attribute_node == 2

node.text_node == 3

node.cdata_section_node == 4

node.entity_reference_node == 5

node.entity_node == 6

node.processing_instruction_node == 7

node.comment_node == 8

node.document_node == 9

node.document_type_node == 10

node.document_fragment_node == 11

node.notation_node == 12

3.子元素、子節點的訪問

對於已經知道元素名字的子元素,可以通過使用

getelementsbytagname()

方法訪問,例:

root.getelementsbytagname("intro") #

讀取intro

子元素

返回的結果是乙個列表。

如果要得到某元素下的所有子節點,可以使用

childnodes屬性:

root.childnodes

getelementsbytagname()

可以搜尋當前元素的所有子元素,包括所有層次的子元素。

childnodes

只儲存了當前元素的第一層子結點。

比如:我們想要得到

intro

元素下的值

「儲存使用者的資訊

」,實現如下**:

node = root.getelementsbytagname("intro")[0]

for node in node.childnodes:

if node.nodetype in ( node.text_node, node.cdata_section_node):

print

(node.data)

這種方式在獲取元素的文字時,需要先判斷才行,所以使用起來感覺不是太方便。

elementtree庫解析xml檔案

elementtree

屬於python

標準庫的一部分

,elementtree

的parse()

方法是這個庫的主要入口,它使用檔名或流物件作為引數,

parse()

方法會立即解析完整個文件,它返回的物件是整個文件的物件,而不是根元素,如果要獲取根元素,可以呼叫

getroot()

方法。

使用上述的

data.xml

文件,通過

elementtree

庫解析的**:

import xml.etree.elementtree as et

#讀取xml

檔案def load_xml_file(filename):

root = et.parse(filename).getroot()

#獲取檔案描述

intro = root.find('intro').text

print

(intro)

#獲取所有

list

節點all_users = root.findall('list')

#遍歷list

節點的子元素

for user in all_users:

#得到head

節點的文字

head = user.find('head').text #得到

name

節點的文字

name = user.find('name').text

#得到***節點的文字

*** = user.find('***').text

print

(head,

name,

***)

if __name__ == '__main__':

load_xml_file('data.xml')

通過這種方式解析

xml檔案比起使用

minidom

庫解析xml

檔案的,操作要方便的多。

Python解析xml檔案

war,thriller 2003 pg10 talk about a us japan war science fiction 1989r8 a schientific fiction action 4 pg10 vash the stampede comedy vhspg 2viewable b...

Python解析xml檔案

解析 xml 格式的檔案有多種方法,這裡只介紹使用 xml.etree.elementtree 這種解析方式.elementtree在 python 標準庫中有兩種實現。一種是純 python 實現例如 xml.etree.elementtree 另外一種是速度快一點的 xml.etree.cele...

python 解析xml檔案

et.parser 用法 python3 xml解析模組xml.etree.elementtree簡介 刪除重複xml節點 import xml.etree.elementtree as et 匯入xml模組 root et.parse gho.xml 分析指定xml檔案 tree root.get...