Разбор XML с деревом элементов в Python - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь использовать дерево элементов в python для анализа XML-файла. Я приложил снимок XML-данные . Мне нужно вытащить все, что находится под тегом TimeSeries, и экспортировать его как CSV.

Я сохранил файл на своем компьютере, поэтому в коде указано имя save.xml. Я попытался просто взять mRID и CurveType в качестве примера, и это не сработало для меня. Это код, который я попробовал.

import xml.etree.cElementTree as ET

tree = ET.parse('save.xml')
root = tree.getroot()

for TimeSeries in root.findall('TimeSeries'):
    mRID = TimeSeries.find('mRID').text
    curve = TimeSeries.get ('curveType')

Как мне взять все, что находится под тегом timeseries, и экспортировать как CSV?

- РЕДАКТИРОВАТЬ ДЛЯ ТОГО, ЧТОБЫ ТАК ЖЕ ПРОБЛЕМА -

код теперь становится таким, потому что нам нужно добавить пространство имен (или удалить его, если это проще) в начале тегов:

#fix namespace issue
ns = {'s': 'urn:iec62325.351:tc57wg16:451-6:generationloaddocument:3:0'}

# use s and namespace in front of all findall

for TimeSeries in root.findall('s:TimeSeries', ns):
    mRID = TimeSeries.find('s:mRID', ns)
    businessType = TimeSeries.find('s:businessType', ns)
    objectAggregation = TimeSeries.find('s:objectAggregation', ns)
    unit = TimeSeries.find('s:quantity_Measure_Unit.name', ns)
    curveType = TimeSeries.find('s:curveType', ns)

1 Ответ

0 голосов
/ 12 июня 2019
#Something like this can be done to fetch the data from xml file`enter code here`
import xml.etree.ElementTree as etree
tree = etree.patse('save.xml')
root = tree.getroot()
for timeseries in root.iter():
    print timeseries.get('mRID')
    print timeseries.get('curveType')
...