У меня есть огромное количество (2k +) XML-файлов, из которых мне нужно извлечь данные и вывести эти данные в какую-то таблицу (Excel или просто один или несколько XML-файлов подойдут).
Самое интересное, что xml-файлы имеют сильно различающееся количество узлов (иногда с одинаковыми именами в подузлах), а также глубина иерархии неизвестна.
В любом случае, вот пример:
<?xml version="1.0" encoding="UTF-8"?>
<SomeName>
<identifier>
<UID> 1234 </UID>
</identifier>
<MainNode1>
<SubNode1>
<Subnode1a>DATA1a0</Subnode1a>
</SubNode1>
<SubNode1>
<Subnode1a>DATA1a1</Subnode1a>
</SubNode1>
<SubNode1>
<Subnode1a>DATA1a2</Subnode1a>
</SubNode1>
</MainNode1>
<MainNode2>
<SubNode2>
<Subnode2a>DATA2a0</Subnode2a>
</SubNode2>
<SubNode3>
<Subnode3a>DATA3a0</Subnode3a>
</SubNode3>
<SubNode4>
<Subnode4a>DATA4a0</Subnode4a>
</SubNode4>
</MainNode2>
<MainNodeIDONTCARE>
<SubnodeWhatever>
</SubnodeWhatever>
<MainNodeIDONTCARE>
</SomeName>
А вот мой стол, к которому я хочу сгладить. В основном это должно выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<SomeName>
<UID>1234</UID>
<MainNode1_SubNode1_SubNode1aA>DATA1a0</MainNode1_SubNode1_SubNode1aA>
<MainNode1_SubNode1_SubNode1aB>DATA1a1</MainNode1_SubNode1_SubNode1aB>
<MainNode1_SubNode1_SubNode1aC>DATA1a2</MainNode1_SubNode1_SubNode1aC>
<MainNode2_SubNode2_SubNode2a>Data2a0</MainNode2_SubNode2_SubNode2a>
<MainNode2_SubNode3_SubNode3a>Data3a0</MainNode2_SubNode3_SubNode3a>
<MainNode2_SubNode4_SubNode4a>Data4a0</MainNode2_SubNode4_SubNode4a>
</SomeName>
Как вы можете видеть, <MainNodeIDONTCARE>
отсутствует в таблице, потому что я просто хочу извлечь определенные наборы данных из файлов XML (я хочу включить необходимые мне MainNodes и просто игнорировать все остальные). В этом случае все, что находится в MainNode1 через MainNode4.
Каков наилучший способ сделать это? Я не беспокоюсь о производительности, потому что файлы не слишком большие, и преобразование может занять столько времени, сколько потребуется.
Есть какой-нибудь умный XSLT или что-нибудь еще, что может мне помочь?
Спасибо.