我需要将多个XML文件(以标准格式)转换并编译为单个CSV文件。因为我还需要对某些导入的元素执行计算,所以XSLT不是一个选项(Stackoverflow:XML to CSV Using XSLT),除非我对每个转换后的CSV文件执行计算。
XPath已被建议作为SAX2的替代品,但由于最终的CSV输出很大(基于100多个XML文件),我对使用数组犹豫不决。 (Stackoverflow:Convert XML file to 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