Разбор многоуровневого ввода XML с использованием Excel VBA - PullRequest
1 голос
/ 08 марта 2011

Как правило, необходимо проанализировать входные данные, соответствующие определенным критериям фильтра, из 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>
  1. Как читать только те узлы, которые начинаются с атрибута в XML?
  2. После выбора всех узлов с атрибутом начинается дальнейший анализ в Excel VBA.Сначала найдите name = X_LOC и получите значение.
  3. Затем найдите name = FUNCTIONAL_X и извлеките значение.
  4. Теперь необходимо поместить все эти значения в столбец 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.Перезапись не требуется.

1 Ответ

1 голос
/ 08 марта 2011

Управление данными XML в Excel невероятно громоздко.Я бы просто придерживался VBA.Создайте XML-документ, как показано ниже, отредактируйте его (используя XPath для доступа к необходимым узлам / элементам) и затем сохраните его.

Set xmlInventory = CreateObject("Msxml2.DOMDocument.6.0")

Документация: http://msdn.microsoft.com/en-us/library/ms756987%28v=VS.85%29.aspx

Учебник XPath: http://www.w3schools.com/xpath/default.asp

...