SSIS XMLSource видит только нулевые значения в переменной XML - PullRequest
3 голосов
/ 27 октября 2010

У меня есть задача потока данных с источником XMLSource, который ссылается на переменную XML.Задача DataFlow распознает, что в переменной x число строк, но в каждой строке она видит только нулевые значения:

Значение переменной xml:

<?xml version="1.0" encoding="utf-8"?>
<words>
   <word>butter</word>
   <word>crispy</word>
</words>

Я использовал этот источникдля генерации XSD в редакторе XMLSource. Вот автоматически сгенерированный XSD:

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="words">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="word" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Пакет компилирует, выполняет и обрабатывает все строки в моем XML, но видит только нули, а не фактический текстстроки ... Вот снимок DataViewer, отображающий 2 строки после чтения переменной XML:

alt text

Ответы [ 2 ]

3 голосов
/ 29 октября 2010

Я нашел способ получить значения для заполнения ... Я опубликую это здесь, не давая себе баллов, на случай, если кто-то еще столкнется с той же проблемой. Это всего лишь «как исправить», но я воздаю должное любому, кто может объяснить «более глубокие причины».

По сути, XML-файл нужно было обернуть в другой корневой узел:

<?xml version="1.0" encoding="utf-8"?>
<datarows>
   <words>
      <word>bacon</word>
      <word>roasted</word>
      <word>pork</word>
      <word>edamame</word>
   </words>
</datarows>

Хотя исходный XML-код, который я использовал, был действительным, SSIS хотела, чтобы он был обернут в дополнительный корневой узел, который я назвал datarows . Как только я это сделал, пакет распознал значения word и успешно завершился.

alt text

Связанная схема:

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="datarows">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" name="words">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" maxOccurs="unbounded" name="word" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
1 голос
/ 14 января 2011

У меня тоже была такая же проблема. Я пытался использовать веб-сервис и импортировать выходной XML в таблицу в SQL 2008.

Проблема действительно в пространстве имен, которое генерируется в выходном xml веб-сервисом. Уловка, которую я использовал, была
1. Сохраненные выходные данные веб-службы в переменной уровня пакета
2. Добавьте «задачу скрипта», чтобы заменить ненужное пространство имен.
3. Затем с помощью «Исходной задачи XMl» импортируйте данные в таблицу.

-Kris ...

...