2016-10-07 10 views
0

Я новичок в python и деревьях и столкнулся с некоторыми проблемами.Etree возвращает «случайную» строку вместо имени атрибута

У меня есть следующий набор данных структурирована:

<?xml version="1.0" encoding="UTF-8"?> 
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"> 
    <node id="someNode"> 
    <data key="label">someNode</data> 
    </node> 
</graphml> 

Я хочу достичь атрибута и значения атрибутов как для корневой и элементов узла.

Я попытался с помощью Python xml.etree.ElementTree так:

import xml.etree.ElementTree as etree 

tree = etree.parse('myDataset') 
root = tree.getroot() 

print('Root: ', root) 

print('Children: ', root.getchildren()) 

, но это то, что я получаю:

Root: <Element '{http://graphml.graphdrawing.org/xmlns}graphml' at 0x031DB5A0> 
Children: [<Element '{http://graphml.graphdrawing.org/xmlns}key' at 0x03F9BFC0> 

Я также попробовать .text и .tag, которые только удалил «на 0x03 ...».

Надеюсь, что вопрос понятен, и кто-то знает решение.

+1

его не «случайная строка», это «объект». –

+0

Я не понимаю, что должно быть проблемой, здесь все нормально. – polku

ответ

1

Если вы хотите вывести корневой и дочерние узлы в XML-текст, вместо представления по умолчанию, используйте xml.etree.ElementTree.tostring(root) и

for child in root: 
    xml.etree.ElementTree.tostring(child) 

официальный DOC здесь: https://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.tostring

И если вы хотите, он помечать имя , использовать tag свойства каждого элемента:

print(root.tag) 
for child in root: 
    print(child.tag) 

дока, описывающее доступные атрибуты: https://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element