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


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM