2015-06-30 1 views
0

Я в XML-файл, как следующие:ElementTree не находит Root правильно

<?xml version="1.0" encoding="UTF-8"?> 
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2"> 
    <graph mode="static" defaultedgetype="directed"> 
     <nodes> 
      <node id="0" label="Hello" /> 
      <node id="1" label="Word" /> 
     </nodes> 
     <edges> 
      <edge id="0" source="0" target="1" /> 
     </edges> 
    </graph> 
</gexf> 

Когда я запускаю следующий код:

import xml.etree.cElementTree as ET 
import xml.sax 

with open('basic.gexf', 'r') as xml_file: 
    tree = ET.parse(xml_file) 
    root = tree.getroot() 

root.tag 

я получаю следующий результат:

'{http://www.gexf.net/1.2draft}gexf' 

Не должно быть только «gexf»?

Моя цель - получить атрибуты графа & узлы & края. Как я могу это сделать без ручной подачи пространства имен?

ответ

0

{http://www.gexf.net/1.2draft} представляет собой пространство имен (xmlns) для gexf.

Ценность, которую вы видите, - это то, что ожидается.

+0

Как я могу получить только «gexf»? Не имея дело с пространствами имен. – SpiderRico

+0

@SpiderRico, я не думаю, что для 'ElementTree' есть что-то встроенное для этого. Зачем тебе это? –

+0

Ну, как я могу разобрать и сделать сравнения? Не нужно ли вводить пространство имен вручную в этом случае? – SpiderRico