2015-10-02 3 views
0

У меня есть XML-файл со следующей структуройпоиск XML-тег с заданным значением

<?xml version="1.0" encoding="ISO-8859-1"?> 
<application name="MyApp"> 
    <component name="MyComponent"> 
     <setting> 
      <name>mySetting</name> 
      <value>myValue</value> 
     </setting> 
    </component> 
</application> 

Теперь я хочу, чтобы выбрать эту настройку (только один единственный) в MyComponent, который имеет название mySetting. Я пробовал root.findall('./application/component/[@name="mySetting"]'), но это дало мне NoneType.

EDIT: текущий код выглядит следующим образом

import xml.etree.ElementTree as ET 
xml = """<?xml version="1.0" encoding="ISO-8859-1"?> 
    <application> 
     <component name="MyComponent"> 
      <setting> 
       <name>mySetting</name> 
       <value>myValue</value> 
      </setting> 
     </component> 
    </application>""" 
root = ET.fromstring(xml) 
settings = root.findall('./component/setting') 

Кто-нибудь есть решение для этого?

+1

Похоже, что вам не хватает «настройки» в запросе XPATH – mguijarr

+0

@mguijarr Вы используете 'root.findall ('./ application/component/setting/[@ name =" mySetting "]')'? Не работает. Но, видимо, я даже не получаю никакого результата от 'root.findall ('./ application /')' – HimBromBeere

+0

Попробуйте использовать '// application' – mguijarr

ответ

1

я, наконец, нашел ответ в связи с @mguijarr, который был намного проще, так как я ожидал ommiting корневого узла из XPATH:

root.findall('./component[@name="MyComponent"]/setting[name="mySetting"]') 
Смежные вопросы