Мне нужно конвертировать и компилировать несколько файлов XML (в стандартном формате) в один файл CSV. Поскольку мне также необходимо выполнить вычисления для некоторых импортированных элементов, XSLT не является опцией (Stackoverflow: XML в CSV с использованием XSLT ), если только я не выполняю вычисления для каждого преобразованного файла CSV.
XPath был предложен в качестве альтернативы SAX2, но, поскольку конечный выход CSV велик (на основе более 100 файлов XML), я не решаюсь использовать массивы. (Stackoverflow: Преобразование файла XML в CSV )
Используя SAX2, я несколько успешно извлек элементы тега.
Если бы я мог добавить вывод - для каждого отдельного файла - к окончательному выводу CSV, я предполагаю, что у меня будет приложение с более стабильной памятью.
Я надеюсь, что другим было бы полезно узнать ответ на вопрос: как я могу эффективно обрабатывать вычисления в сочетании с преобразованиями XML-CSV для крупномасштабных данных?
XML-файл 1
<element id="1">
<info>Yes</info>
<startValue>0</startValue> <!-- Value entered twice, ignore--!>
<startValue>256</startValue>
<stopValue>64</stopValue>
</element>
<element id="2">
<info>No</info>
<startValue>50</startValue>
<stopValue>25</stopValue>
</element>
<....
XML-файл 2
<element id="1">
<info>No</info>
<startValue>128</startValue>
<stopValue>100</stopValue>
</element>
<....
Pseudopseudocode
for all files
get ID
get info
for all stop and start values
ignore wrong values: use counter
difference[] = startValue(i) - stopValues(j) = 196, 28
append (ID, info and difference) to file "outputfile.csv"
Пример CSV Eutput
File ID Info Difference Etc
_________________________________________________
0 1 Yes 196 ....
0 2 No 25 ....
1 1 No 28 ....
. ... ... ....
. ... ... ....
nfiles