2012-05-15 2 views
-1

У меня есть XML-файл, как:разбор файла XML

<one> 
<a>sth</a> 
<b>sth</b> 
<c>sth</c> 
</one> 
<one> 
<a>x</a> 
<b>y</b> 
<c>z</c> 
</one> 

то, что я хочу, чтобы получить имена «а», «б», «в» из XML, то есть ребенок в узле «один», используя xml.dom

+3

и что вы пробовали? – gefei

+0

то, что я попытался это: ' из xml.dom импорта minidom дом = minidom.parse (' sth.xml ') detailList = dom.getElementsByTagName (' один ') [0] .childNodes для каждого в detailList: print each.tagName ' – ashokadhikari

+0

Это недействительный файл xml, он должен иметь один корень –

ответ

0

XML файл должен нравится формат, такие как

<?xml version="1.0" ?> 
<ones> 
<one> 
<a>sth</a> 
<b>sth</b> 
<c>sth</c> 
</one> 
<one> 
<a>x</a> 
<b>y</b> 
<c>z</c> 
</one> 
</ones> 

Вы можете попробовать код последующей:

from xml.dom import minidom 

xmldoc = minidom.parse('filePath') 
root = xmldoc.documentElement 

ones = root.getElementsByTagName('one') 

L = [] 
for one in ones: 
    m = {} 
    #print onn.getElementsByTagName('a')[0].childNodes[0].nodeValue 
    #print n.getElementsByTagName('b')[0].childNodes[0].nodeValue 
    #print n.getElementsByTagName('c')[0].childNodes[0].nodeValue 
    for n in one.childNodes: 
     if n.nodeType == n.ELEMENT_NODE: 
       m[n.nodeName] =n.firstChild.nodeValue 
    L.append(m) 
+0

Спасибо. Теперь, если я хочу составить список dicts как [{'a': sth, 'b': sth, 'c': sth}, {'a': x, 'b': y, 'c': z}] , что означает, что я не знаю названия тегов заранее, и я хочу прочитать все присутствующие данные, тэг: значение, что мне делать? – ashokadhikari

+0

Я меняю код, вы можете попробовать его –