Как правило, необходимо проанализировать входные данные, соответствующие определенным критериям фильтра, из XML с помощью Excel VBA.Сложность заключается в многоуровневых атрибутах XML и результатах их сопряжения, которые должны последовательно заполняться в Excel.
Содержимое XML, как показано ниже:
<Flow index="1" item="1" itemName="BB_150" ID="XXX">
<Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">1</Attribute>
<Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">2</Attribute>
</Flow>
<Flow index="2" item="2" itemName="CC_200" ID="WWW">
<Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">15</Attribute>
<Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">3</Attribute>
</Flow>
<Flow index="3" item="3" itemName="DD_200" ID="UUU">
<Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">20</Attribute>
<Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">1</Attribute>
</Flow>
<Flow index="4" item="4" itemName="EE_115" ID="SSS">
<Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">33</Attribute>
<Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">2</Attribute>
</Flow>
- Как читать только те узлы, которые начинаются с атрибута в XML?
- После выбора всех узлов с атрибутом начинается дальнейший анализ в Excel VBA.Сначала найдите name = X_LOC и получите значение.
- Затем найдите name = FUNCTIONAL_X и извлеките значение.
- Теперь необходимо поместить все эти значения в столбец Excel на листе «Результат».Формат вывода в Excel, как показано ниже:
Столбец (начинается со столбца A .. затем продолжается до следующего столбца .. и т. Д.) Имя заголовка = X_LOC (сортировка и отображение в порядке возрастания) Результат строки (начинается с row1..then row2..etc) = FUNCTIONAL_X (для каждой пары X_LOC)
Результат, заполненный в Excel, должен выглядеть следующим образом:
A B C D (Excel column)
1 2 3 4 (X_LOC value)
A1 B1 C1 D1 (Excel Row)
1 15 20 33 (FUNCTIONAL_X value)
Примечание: если есть повторение того же самогозначение для X_LOC, ничего не делать.Оставить существующий X_LOC и его значение FUNCTIONAL_X.Перезапись не требуется.