1. 程式人生 > >python xml childNodes,childNodes[1].childNodes[0].data例子

python xml childNodes,childNodes[1].childNodes[0].data例子

error 代碼 -- document 是個 OS ber this list集合

xml:

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!--this is a test about xml-->
<booklist type=‘scicence and enginerring‘>
<book category=‘math‘>
<title>learing math</title>
<title>learing math1</title>
<author>zhagn san</author>
<pageNumber>562</pageNumber>
</book>
<book category=‘python‘>
<title>learing Python</title>
<author>li si</author>
<pageNumber>544</pageNumber>
</book>
</booklist>

下面代碼可以看出每一層節點和內容介紹:

#coding=utf-8

from xml.dom.minidom import parse

DOMTree=parse(r"d:\\test.xml")
booklist=DOMTree.documentElement
print booklist
print "*"*30

books=booklist.getElementsByTagName(‘book‘)
print "books:",books
print "books[0].childNodes:",books[0].childNodes
print "books[0].childNodes[1]:",books[0].childNodes[1]
print "books[0].childNodes[1].childNodes:",books[0].childNodes[1].childNodes
print "books[0].childNodes[1].childNodes[0]:",books[0].childNodes[1].childNodes[0]
print "books[0].childNodes[1].childNodes[0].data:",books[0].childNodes[1].childNodes[0].data
#print "books[0].childNodes[1].childNodes[1]:",books[0].childNodes[1].childNodes[1]

解釋:

#books是獲取booklist對象中所有book節點的list集合

books: [<DOM Element: book at 0x28855d0>, <DOM Element: book at 0x2885990>]

#books[0].childNodes: 是第一個book節點的所有子節點,是一個列表
books[0].childNodes: [<DOM Text node "u‘\n ‘">, <DOM Element: title at 0x28856e8>, <DOM Text node "u‘\n ‘">, <DOM Element: title at 0x2885788>, <DOM Text node "u‘\n ‘">, <DOM Element: author at 0x2885828>, <DOM Text node "u‘\n ‘">, <DOM Element: pageNumber at 0x28858c8>, <DOM Text node "u‘\n ‘">]

#books[0].childNodes[1]: 是第一個book節點的第二個子節點,是一個title標簽元素-:<title>learing math1</title>,包含了標簽和標簽的子節點:文本節點
books[0].childNodes[1]: <DOM Element: title at 0x28856e8>

#books[0].childNodes[1].childNodes: 是第一個book節點的第二個子節點(title標簽元素)的子節點(文本節點),是個列表
books[0].childNodes[1].childNodes: [<DOM Text node "u‘learing ma‘...">]

#books[0].childNodes[1].childNodes[0]: 是第一個book節點的第二個子節點(title標簽元素)的子節點(文本節點-list)的第一個元素
books[0].childNodes[1].childNodes[0]: <DOM Text node "u‘learing ma‘...">

#books[0].childNodes[1].childNodes[0].data:是第一個book節點的第二個子節點(title標簽元素)的子節點(文本節點-list)的第一個元素的值
books[0].childNodes[1].childNodes[0].data: learing math

#books[0].childNodes[1].childNodes[1]: 試圖是拿到第一個book節點的第二個子節點(title標簽元素)的子節點(文本節點-list)的第二個元素,但是報錯了,可知該列表中只有一個元素
books[0].childNodes[1].childNodes[1]:
Traceback (most recent call last):
File "task_test.py", line 17, in <module>
print "books[0].childNodes[1].childNodes[1]:",books[0].childNodes[1].childNodes[1]
IndexError: list index out of range

由此而知,

凡是.以childNodes 結尾的,結果就是列表

凡是.以childNodes[i] 結尾的,結果就是一個節點元素

c:\Python27\Scripts>python task_test.py
<DOM Element: booklist at 0x28854b8>
******************************
books: [<DOM Element: book at 0x28855d0>, <DOM Element: book at 0x2885990>]
books[0].childNodes: [<DOM Text node "u‘\n ‘">, <DOM Element: title at 0x28856e8>, <DOM Text node "u‘\n ‘">, <DOM Element: title at 0x2885788>, <DOM Text node "u‘\n ‘">, <DOM Element: author at 0x2885828>, <DOM Text node "u‘\n ‘">, <DOM Element: pageNumber at 0x28858c8>, <DOM Text node "u‘\n ‘">]
books[0].childNodes[1]: <DOM Element: title at 0x28856e8>
books[0].childNodes[1].childNodes: [<DOM Text node "u‘learing ma‘...">]
books[0].childNodes[1].childNodes[0]: <DOM Text node "u‘learing ma‘...">
books[0].childNodes[1].childNodes[0].data: learing math
books[0].childNodes[1].childNodes[1]:
Traceback (most recent call last):
File "task_test.py", line 17, in <module>
print "books[0].childNodes[1].childNodes[1]:",books[0].childNodes[1].childNodes[1]
IndexError: list index out of range

python xml childNodes,childNodes[1].childNodes[0].data例子