Я работаю с созданной программой частью xml, которая имеет ужасную маркировку. Я смог разобрать то, что я ищу, но я не думаю, что это очень питонов. Цель программы состоит в том, чтобы суммировать записи totalLines, среди прочих. Я использую elementtree для извлечения значений. Ищите предложения по упрощению моего синтаксиса.Работа с объектами xml child, ElementTree в Python
XML:
<?xml version="1.0"?>
<Status name="System Status">
<Bean name="SLMHandler" cn="com.open.eventCollector.OSLMHandler">
<Status name="SLF File manager for SODLC2">
<Prop name="totalLines">1105413065</Prop>
</Status>
</Bean>
<Bean name="ThreadPool" cn="com.open.util.OThreadPoolBean">
<Prop name="minThreads">5</Prop>
<Prop name="maxThreads">25</Prop>
<Prop name="checkedOutThreads">3</Prop>
<Prop name="availableThreads">2</Prop>
<Prop name="maxIdleTime">300000</Prop>
</Bean>
<Bean name="EventCollector" cn="com.open.eventCollector.OEventCollector">
<Prop name="numUnmatchedLines">785319</Prop>
<Status name="Adapters">
<Status name="Logfile_EpilogWin_Generic">
<Prop name="linesRead">0</Prop>
</Status>
</Status>
</Bean>
Python:
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for bean in root.findall('Bean'):
for status in bean.findall('Status'):
if 'Adapters' in status.get('name'):
for status2 in status.findall('Status'):
for prop in status2.findall('Prop'):
if 'linesRead' in prop.get('name'):
print prop.text
это отлично работает, к сожалению, сервер, с которым я работаю, полностью изолирован от Интернета и имеет только python 2.7, который, по-видимому, не поддерживает xpaths. –