是否有一種有效的方法來獲取XML中每個節點的級別,使用python xml解析器?節點的級別也可以通過在解析xml自頂向下時計算結束標籤來確定,但是,我也需要幫助:)。謝謝!(Python)如何在xml中獲取節點的級別?
1
A
回答
3
也許這可能是一個最初的想法:
from xml.etree import ElementTree
from xml.etree.ElementTree import iterparse
level = 0
for (event, node) in iterparse(fileName, ['start', 'end', 'start-ns', 'end-ns']):
if event == 'end':
level -= 1
if event == 'start':
level += 1
# do soething with node ...
0
我被「蟒蛇XML解析器」你的意思是xml.etree
假設。還有其他庫(如lxml
)可以使這項工作更容易,但根據this answer有沒有簡單的方法來訪問使用此庫的父元素。然而,解決辦法提出有(創建家長到整個樹的映射)就足以確定任何特定元素的水平:
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()
# root = ET.fromstring(...) # Alternative
parent_map = dict((c, p) for p in root.getiterator() for c in p)
def level(node):
return level(parent_map[node])+1 if node in parent_map else 0
0
我總是用minidom命名,並推薦它爲這些類和XML文件的交互。您可以爲此使用元素的parentNode屬性。
import xml.dom.minidom as parser
tree = parser.parse('xml.xml')
#let's say we want the first instance of a tag with an specific name
x = tree.getElementsByTagName('tagname')[0]
level = 0
while x:
x = x.parentNode
level += 1
print(level)
這是一個鏈接到minidom documentation。
相關問題
- 1. 如何從xml中獲取節點不知道它在flex中的級別?
- 2. 如何在xml中獲取所有第一級嵌套節點?
- 3. 如何獲取XML節點
- 4. jstree獲取所選節點的級別
- 5. 如何只獲取xml中的根節點的節點在c#
- 6. 如何在Python中獲取節點的XML值?
- 7. 如何獲取treeView中的節點級別?
- 8. ALV TREE:獲取節點級別
- 9. 如何獲取XML中的父節點的父節點
- 10. 分層xml的返回節點級別
- 11. C#如何確定xml中的子節點級別
- 12. 獲取XML節點
- 13. 獲取XML節點
- 14. 從xml中獲取節點
- 15. Python:在xml中,如何刪除父節點中的節點
- 16. XSLT 1.0分別在節點級別獲取唯一值
- 17. 如何從指定級別獲取json節點?
- 18. 如何使用python獲取XML的所有子節點?
- 19. 獲取XML節點的值
- 20. 獲取XML節點的localName
- 21. DOM XML - 如何獲取子節點?
- 22. 如何從節點獲取屬性xml
- 23. 如何獲取xml節點文本?
- 24. 如何從字典中顯示的樹中獲取每個節點的級別?
- 25. 如何在基於widow的wpf應用程序中獲取樹視圖的選定節點的節點級別?
- 26. 在Python中獲取XML節點的路徑
- 27. Java的DOM XML解析如何通過多個節點級別
- 28. 如何將ID分配給同一級別的xml節點
- 29. 如何在JavaScript中獲取每個錨內的頂級節點?
- 30. 在xml列中獲取節點值
謝謝!這就是我正在尋找的! :),其他答案很好,但他們打算找到一個節點的級別,而不是每個節點。 – Curious 2013-03-01 07:51:35