SSIS XML Ошибка анализа с родительскими / дочерними элементами с тем же именем - PullRequest
0 голосов
/ 18 июня 2020

У меня возникла проблема с синтаксическим анализом файла XML в промежуточные таблицы MS SQL через SSIS из-за файловой структуры XSD, которую я не могу изменить. Вот формат XSD:

<xs:element name="syndromes">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="syndrome" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="syndromeid" type="xs:integer"/>
            <xs:element name="uniqueid" type="xs:integer"/>
            <xs:element name="syndrome" type="xs:integer" minOccurs="0"/>
            <xs:element name="syndromespec" type="xs:string" minOccurs="0"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Я сопоставил всю свою таблицу и настроил пакет SSIS для импорта данных из XML в некоторые промежуточные таблицы. Когда я запускаю пакет SSIS, он сразу же выходит из строя и сообщает следующее:

[ABC_TEST_ XML [2822]] Ошибка: ABC_TEST_ XML не смог обработать данные XML. Элемент «синдром» не может содержать дочерний элемент. Модель содержимого - только текст.

После некоторого исследования выяснилось, что SSIS не может справиться с двумя элементами «синдрома» с одинаковым именем. XSD позволяет мне настраивать все сопоставления столбцов, поэтому я не понимаю, почему при синтаксическом анализе файла XML он не работает. Есть ли обходной путь? Есть ли способ преобразовать данные в файле перед синтаксическим анализом. Любая помощь будет принята с благодарностью.

Мне не разрешено ни изменять XSD, ни указывать отправителю данных на изменение исходного XML файла. Я должен иметь возможность анализировать данные, поскольку они соответствуют существующему XSD.

1 Ответ

0 голосов
/ 20 июня 2020

Я думаю, что эта проблема очень похожа: Компонент «XML Источник» не смог обработать данные XML. неоднозначное определение комплексного типа. Элемент «%» имеет несколько членов с именем «%»

Я никогда не использовал SSIS MQ SQL, но кажется довольно очевидным, что SSIS имеет некоторые серьезные ограничения, когда дело доходит до структурированных *. 1009 *. Я предлагаю вам использовать тот же подход, что и VinayK в другом потоке - использовать XSL, чтобы изменить XML на то, что будет принимать SSIS.

...