2010-10-26 2 views
3

J'ai une tâche de flux de données avec une source XML qui référence une variable XML. La tâche Dataflow ne reconnaît qu'il ya x nombre de lignes dans la variable, mais il ne voit que des valeurs nulles dans chaque ligne:Source XML SSIS ne voyant que les valeurs nulles dans la variable XML

La valeur de la variable xml:

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

J'ai utilisé cette source pour générer le XSD dans le SourceXML Editor - voici le XSD généré automatiquement:

<?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> 

le paquet compile, exécute et traite toutes les lignes dans mon XML, mais ne voit que les valeurs nulles et non des chaînes de texte réelles ... Voici un tir du DataViewer affichant 2 lignes après avoir lu le XML variable:

alt text

+0

Y at-il une sorte de codage option que vous avez à jouer avec quelque part? – brumScouse

Répondre

3

J'ai découvert un moyen d'obtenir les valeurs pour remplir ... Je vais le poster ici sans me donner des points, au cas où quelqu'un d'autre rencontre le même problème. C'est juste un "comment réparer", mais je donnerai le crédit à n'importe qui qui peut expliquer le "pourquoi plus profond".

Essentiellement, le XML devait être enveloppé dans un autre nœud racine:

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

Même si le XML original j'était valide, SSIS voulait qu'il soit enveloppé dans un nœud racine supplémentaire, que j'ai appelé datarows. Une fois que j'ai fait cela le paquet a reconnu le le mot valeurs et terminé avec succès.

alt text

Le schéma associé:

<?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

moi aussi eu le même problème ,. J'essayais de consommer un service web et d'importer le fichier XML de sortie dans une table en SQL 2008.

Le problème est vraiment lié à l'espace de noms qui est généré dans le fichier XML de sortie par le service Web. L'astuce que j'ai utilisée était
1. Stocker la sortie du service Web dans une variable de niveau de paquet
2. Ajouter une 'tâche de script', pour remplacer l'espace de nom non désiré.
3. Ensuite, vous avez utilisé 'XMl Source Task' pour importer les données dans une table.

-Kris ...

Questions connexes