Configuration du lecteur de données XML
Configurez le lecteur de données XML (Extensible Markup Language) dans le fichier de configuration d'objet métier afin de modifier la façon dont les données sont lues depuis les fichiers source au format XML. Vous pouvez changer les paramètres par défaut du lecteur de données XML pour les adapter au format de vos données.
Les données lues depuis un fichier XML peuvent être mappées à un objet métier WebSphere Commerce à l'aide d'un fichier de configuration d'objet métier. Avec ce fichier de configuration, chaque élément de données figurant dans le fichier XML d'entrée peut être mappé directement à une propriété d'un objet métier WebSphere Commerce. Ce gestionnaire lit et crée un mappage de paire nom-valeur qui mappe un enregistrement à la fois, puis transmet chaque mappage à un générateur d'objet métier.
Procédure
-
Localisez le fichier de configuration d'objet métier wc-loader-object.xml pour le type d'objet métier que vous chargez. Ouvrez le fichier de configuration en vue de son édition.
Des exemples de fichier de configuration d'objet métier se trouvent dans le répertoire suivant :
WCDE_installdir/samples/DataLoad/Catalog
utilities_root/samples/DataLoad/Catalog
-
Recherchez l'élément de configuration de lecteur de données suivant :
<_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.XmlReader" > </_config:DataReader> - Facultatif :
Ajoutez les classes de gestionnaire dans l'élément de configuration de lecteur de données afin de changer la façon dont l'utilitaire de chargement de données gère le chargement de vos données XML.
Pour ajouter une classe de gestionnaire XML, vous devez spécifier la classe au format suivant :
<_config:XMLHandler className=""/>. Par exemple, la configuration suivante ajoute la classe de gestionnaire XMLNVPXmlHandlerà la configuration du lecteur de données :<_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.XmlReader" > <_config:XmlHandler className="com.ibm.commerce.foundation.dataload.xmlhandler.NVPXmlHandler" /> </_config:DataReader>La classe suivante est disponible par défaut :
- NVPXmlHandler
- Cette classe de gestionnaire est le gestionnaire par défaut pour XmlReader et est utilisée pour traiter les données XML génériques qui respectent un format de fichier de type CSV spécifique. Ce gestionnaire lit chaque élément de deuxième niveau en tant qu'enregistrement d'objet distinct. Il analyse votre fichier d'entrée, un enregistrement d'objet à la fois, et génère une mappe de hachage pour chaque enregistrement qui est ensuite transmis au générateur d'objet métier. La clé de cette mappe est le nom d'élément ou d'attribut pour les objets d'un type d'objet métier particulier que vous chargez. Vous pouvez modifier ce comportement par défaut en indiquant le paramètre suivant : xpathEnabled, qualifiedName et nvpReMapping. Reportez-vous aux descriptions détaillées de l'utilisation de ces propriétés facultatives à l'étape suivante.
Si vous ne spécifiez pas de gestionnaire XML dans votre configuration de lecteur de données, ce gestionnaire est utilisé. Tous les fichiers de configuration de chargement de données qui sont utilisés pour charger des fichiers d'entrée CSV peuvent être utilisés pour charger des fichiers d'entrée XML. L'infrastructure de chargement de données sélectionne le lecteur de données utilisé automatiquement en fonction du type du fichier d'entrée, CSV ou XML.
- Facultatif :
Ajoutez des propriétés de configuration dans l'élément de configuration de lecteur de données pour satisfaire vos exigences de chargement de données.
Pour ajouter une propriété de configuration, vous devez spécifier la propriété au format suivant :Les propriétés facultatives suivantes peuvent être utilisées avec la classe NVPXmlHandler par défaut :
<_config:property name="" value""/>. Par exemple, la configuration suivante ajoute la propriété de configurationrecordXpathpour une entrée de catalogue dans la configuration de lecteur de données :<_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.XmlReader" > <_config:property name="recordXpath" value="CatalogEntry" /> </_config:DataReader>- recordXpath
- Si dans votre fichier d'entrée, l'élément objet est imbriqué profondément, vous pouvez définir le chemin XPath de sorte que le gestionnaire commence à lire l'élément objet imbriqué comme élément racine. Lorsque vous spécifiez cette propriété, tout élément XML associé à une valeur qui correspond au chemin XPath de cette propriété est traité par l'utilitaire de chargement de données en tant qu'enregistrement distinct. Si vous ne spécifiez pas cette propriété, seuls les éléments XML de deuxième niveau sont traités comme des enregistrements d'objet individuels.
Comme valeur pour ce paramètre, spécifiez un chemin XPath. Il peut s'agir d'un chemin XPath absolu ou relatif. Un chemin XPath est absolu s'il commence par une barre oblique (/). Un chemin XPath relatif est simplement un nom d'élément unique. Par exemple, vous pouvez spécifier le chemin XPath absolu suivant :
ou le chemin XPath relatif suivant :<_config:property name="recordXpath" value="/Object/ObjectType/CatalogEntry" />
Ce XPath garantit que l'objet<_config:property name="recordXpath" value="CatalogEntry" /><CatalogEntry>dans l'exemple suivant est lu comme un élément d'enregistrement :
Les autres éléments,<Object> <ObjectType> <CatalogEntry> <PartNumber>productPartNumber-1</PartNumber> </CatalogEntry> </ObjectType> <Object><Object>et<ObjectType>sont ignorés. - xpathEnabled
- Si vos noms d'élément ne sont pas uniques, vous pouvez utiliser cette propriété pour utiliser le chemin XPath afin de créer l'unicité dans le mappage de paire nom-valeur. Si vous associez cette propriété à la valeur true, la clé pour le mappage de vos données au cours du processus de chargement de données utilise le chemin XPath vers l'élément. Si la valeur est false, la clé pour le mappage de vos données est le nom d'élément ou le nom d'attribut. Le chemin XPath utilisé est relatif à votre enregistrement d'élément. La valeur par défaut de cette propriété est false. Remarque : Si vous associez cette propriété à la valeur true, vous devez aussi changer la valeur pour le mappage de votre objet dans le fichier de configuration d'objet métier de chargement de données.Par exemple, si votre fichier d'entrée contient l'élément d'entrée de catalogue suivant :
Si vous associez xpathEnable à la valeur true, le gestionnaire XML génère le mappage suivant :<CatalogEntry catalogEntryTypeCode="ProductBean" displaySequence="1.0"> <PartNumber>productPartNumber-1<PartNumber> <Description> <Name>name-1<Name> <Description> </CatalogEntry>
Les clés dans le mappage correspondent au chemin XPath qui est toujours relatif à la racine de votre élément d'enregistrement CatalogEntry sans barre oblique (/). L'attribut est traité comme un élément dans le chemin XPath.catalogEntryTypeCode = ProductBean displaySequence = 1.0 PartNumber = productPartNumber-1 Description/Name = name-1 - nvpReMapping
- Cette propriété contrôle la façon de rétablir le mappage de paire nom-valeur de vos données qui sont transmises pour un enregistrement d'objet au gestionnaire d'objet métier. La valeur de cette propriété définit la liste des règles de remappage pour vos données. Si les éléments qui contiennent des informations sur votre objet comportent des noms qui ne sont pas uniques, vous pouvez utiliser cette propriété de configuration pour assurer l'unicité. Par exemple, dans une entrée de catalogue, des éléments objet pour l'entrée de catalogue
<name>shirt</name>et l'attribut<name>color</name>peuvent exister. Le gestionnaire XML interprète les valeurs de ces éléments comme deux valeurs pour un seul élémentnameet les enregistre sous forme de liste dans le mappage de paire nom-valeur,name=[shirt, color]. En remappant le chemin XPath pour ces éléments, vous pouvez vous assurer que le gestionnaire lit et mappe ces éléments et ces valeurs correctement.Dans votre liste de règles de remappage de paire nom-valeur, chaque règle doit être séparée par le caractère '|'. Chaque règle contient trois jetons qui sont séparés par une virgule (','). Le premier jeton concerne la nouvelle clé dans le remappage. Le deuxième jeton concerne la nouvelle valeur dans le remappage, et le troisième jeton concerne le préfixe dans la clé de remappage.
Par exemple, si votre fichier d'entrée contient les éléments d'entrée de catalogue suivants :
La classe de gestionnaire lit par défaut le chemin XPath pour les éléments de description suivants :<CatalogEntry> <CatalogEntryIdentifier> <ExternalIdentifier> <PartNumber>productPartNumber-1</PartNumber> </ExternalIdentifier> </CatalogEntryIdentifier> <Description> <Attributes name="auxDescription1">auxDesc1-1</Attributes> <Attributes name="auxDescription2">auxDesc2-1</Attributes> <Attributes name="published">1</Attributes> </Description>
Le gestionnaire mappe ces éléments comme s'il s'agit de deux éléments :name=[auxDescription1, auxDescription2, published], Attributes=[auxDesc1-1, auxDesc1-2, 1]
Si vous définissez la propriété de configuration de remappage comme suit :name=[auxDescription1, auxDescription2, published] Attributes=[auxDesc1-1, auxDesc2-1, 1]
Le gestionnaire lit les éléments comme s'il s'agit de trois éléments distincts et les mappe comme suit :<_config:property name="nvpReMapping" value="name, Attributes, " />
Si vous spécifiez la règle de remappage contenant le préfixe :auxDescription1 = auxDesc1-1 auxDescription2 = auxDesc2-1 published = 1
Ces éléments sont lus et mappés comme suit :<_config:property name="nvpReMapping" value="name, Attributes, Description/Attributes/name/" />Description/Attributes/name/auxDescription1 = auxDesc1-1 Description/Attributes/name/auxDescription2 = auxDesc2-1 Description/Attributes/name/published = 1Remarque : Si vous changez le mappage de paire nom-valeur pour un objet, vous devez aussi changer la valeur pour le mappage de votre objet dans le fichier de configuration d'objet métier de chargement de données. Par exemple, pour mapper ces données en vue de l'utilisation des règles de remappage, votre mappage de configuration d'objet métier peut être le suivant :
Le préfixe de valeur<_config:mapping xpath="Description/Attributes/auxDescription1" value="Description/Attributes/name/auxDescription1" /> <_config:mapping xpath="Description/Attributes/auxDescription2" value="Description/Attributes/name/auxDescription2" /> <_config:mapping xpath="Description/Attributes/published" value="Description/Attributes/name/published" />Description/Attributes/nameest facultatif. Si vous n'utilisez pas de préfixe, votre mappage sera similaire à l'exemple suivant :<_config:mapping xpath="Description/Attributes/auxDescription1" value="auxDescription1" /> <_config:mapping xpath="Description/Attributes/auxDescription2" value="auxDescription2" /> <_config:mapping xpath="Description/Attributes/published" value="published" /> - qualifiedName
- Le nom qualifié est utilisé pour garantir l'unicité des éléments de données que vous chargez. Cette unicité est obtenue via l'inclusion de l'espace de nom dans le nom de vos données d'élément dans le mappage de paire nom-valeur. Associez cette propriété à la valeur true afin d'inclure l'espace de nom dans la clé de la mappe qui est transmise à votre générateur d'objet métier. La valeur par défaut est false.Remarque : Si vous associez cette propriété à la valeur true, vous devez aussi changer la valeur pour le mappage de votre objet dans le fichier de configuration d'objet métier de chargement de données.
Utilisation de valeurs d'élément et d'attribut :Vous pouvez utiliser des éléments ou des attributs pour ajouter des données à charger. Généralement, les 2 méthodes de chargement donnent les mêmes résultats. Cependant, le chargement diffère lorsque la valeur est vide.
Par défaut, tous les éléments dont les valeurs sont vides sont considérés comme null. Cependant, les attributs dont les valeurs sont vides sont considérés des valeurs vides. Autrement dit, la valeur est null dans la base de données si vous utilisez un élément pour Name, et elle y est vide si vous utilisez un attribut pour Name. Ce comportement par défaut peut être modifié à l'aide des propriétés de configuration facultatives suivantes.Pour plus d'informations, voir Création de données au format XML.- ignoreEmptyElementText
- Avec la valeur false, les éléments vides sont considérés des valeurs vides. La valeur par défaut est true.
- ignoreEmptyAttributeValue
- Avec la valeur true, les valeurs d'attribut vides sont considérées comme null. La valeur par défaut est false.
<DataReader>, l'élément<LoadItem>ou l'élément<LoadOrder>comme :<_config:property name="ignoreEmptyElementText" value="false" /> - Facultatif :
Configurez votre processus de chargement de données afin d'inclure le préprocesseur de lecteur de données.
Pour configurer l'exécution d'un préprocesseur, vous devez spécifier la classe du préprocesseur au format suivant :
Par exemple, la configuration suivante spécifie qu'un préprocesseur des différences entre les fichiers doit être exécuté :<_config:DataReaderPreprocessor className="" /><_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.XmlReader" > <_config:DataReaderPreprocessor className="com.ibm.commerce.foundation.dataload.datareader.XmlFileDiffPreprocessor" /> </_config:DataReader>Le préprocesseur de lecteur de données suivant peut être utilisé avec l'utilitaire de chargement de données :- com.ibm.commerce.foundation.dataload.datareader.XmlFileDiffPreprocessor
- Ce préprocesseur compare un ancien fichier d'entrée et un nouveau fichier d'entrée et génère un nouveau fichier contenant seulement les différences qui existent dans le nouveau fichier. Il peut améliorer les performances des opérations de chargement de données de routine en évitant le chargement des données chargées précédemment. Pour plus d'informations sur ce préprocesseur, voir Exécution du préprocesseur des différences entre les fichiers de chargement de données. Si vous exécutez ce préprocesseur, vous pouvez aussi inclure d'autres propriétés de configuration propres à ce préprocesseur. Pour plus d'informations sur la configuration de ce préprocesseur et sur les propriétés de configuration disponibles pour ce préprocesseur, voir Configuration de l'utilitaire de chargement de données pour l'exécution du préprocesseur des différences entre les fichiers.
- Sauvegardez et fermez votre fichier.