2016-07-12 3 views
1

У меня есть документ XML, для которого я в том числе достаточное подмножество в ниже репродуктора, для которого tree.find() не возвращает результаты:ElementTree не может найти элемент

import xml.etree.ElementTree as ET 

xml_str = ''' 
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
    <System/> 
</Event> 
''' 

tree = ET.fromstring(xml_str) 
system = tree.find('System')    

Я планирующим system для хранения <System> метки в настоящее время , но это None. Я что-то упустил?

Когда я использовал индексы массива (например, tree[0][0]), он действительно работал.

+0

Это не 'system' тег, это' {http://schemas.microsoft.com/win/2004/08/events/event}System тег. Пространства имен имеют значение. –

+0

Вероятно дублирующее http://stackoverflow.com/questions/21127119/find-an-element-in-an-xml-tree-using-elementtree –

+0

... отредактировал репродуктор, чтобы он полностью копировал/вставлял дружественные (ранее , документированный должен быть исправлен до того, как он будет разбираться, поэтому не подлежит проверке). –

ответ

2

Используйте пространство имен в вашем поиске:

>>> doc.find('{http://schemas.microsoft.com/win/2004/08/events/event}System') 
<Element {http://schemas.microsoft.com/win/2004/08/events/event}System at 0x10167e5a8> 
Смежные вопросы