Lire un fichier XML Infopath avec SSIS
Dans SSIS, lorsqu’on utilise un fichier XML issus de Infopath comme source XML, on obtient l’erreur suivante :
« Unable to infer the XSD from the XML file. The XML contains multiple namespaces »
Pour pouvoir utiliser ce fichier avec SSIS, il faut :
- Supprimer les Namespaces
- Ajouter une balise pour que SSIS interprète les champs du fichier XML comme des colonnes d’une même table et non comme des tables distinctes.
Ceci peut se faire via un script de transformation XSLT .
Dans le control flow, il faut créer une tache XML de type XSLT.
Elle a besoin de 3 connections sur 3 fichiers différents :
Input : C’est une connexion sur le fichier XML source
Output : C’est le résultat de la transformation. Cela peut être une connexion sur un fichier (nécessaire pour générer une première fois le fichier XSD) , ou une variable, qui pourra ensuite être utilisée comme source XML.
Second Operand : C’est le script XSLT qui sera appliqué. Le SecondOperandType peut être une connexion si le script est stocké dans un fichier externe, ou bien DirectInput, si le code du script est saisi directement dans la valeur de SecondOperand.
Voici le contenu du script XSLT pour supprimer les Namespaces et générer la balise <myTable> :
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no" /><xsl:template match="/|comment()|processing-instruction()">
<xsl:copy>
<myTable>
<xsl:apply-templates />
</myTable>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Le fichier résultat est maintenant utilisable par SSIS comme source XML.










Commentaires récents