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
#列印根節點的
名字節點的值
節點型別
(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):
(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
(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
(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...