Extensible Markup Language (XML) est un langage courant. ArcGIS Velocity peut ingérer des données d’observation IoT exprimées au format XML à partir de nombreuses sources.
Le format de données XML est pris en charge pour les types de flux et de source de données suivants :
- Flux : Azure Event Hub, Azure Service Bus, Site Web (Interrogation), RabbitMQ, WebSocket, Kafka, MQTT, AWS IoT, Extrémité (Réception).
- Sources de données : Amazon S3, Stockage Azure Blob, Site Web (Interrogation).
Spécifier la configuration XML
Lors de la configuration d’un flux ou d’une source de données, un échantillonnage est effectué pour identifier le type des données ingérées. Si, au cours de l’échantillonnage, le format de données XML est identifié, d’autres propriétés relatives à la configuration XML peuvent être spécifiées.
Élément racine
Le cas échéant, spécifiez le Root element (élément racine) de votre structure XML où les messages se trouvent. L’élément racine doit identifier un objet dont les sous-éléments sont des attributs. Ne renseignez pas ce champ si votre structure XML contient tous les messages sous la racine de votre document XML.
Prenons les données d’échantillon XML suivantes, comportant plusieurs éléments :
<?xml version="1.0" encoding="UTF-8"?>
<flight>
<aircraftData>
<aircraftID>N-X-211</aircraftID>
<pilot>Charles L.</pilot>
<speed>212.28</speed>
<altitude>20200</altitude>
<heading>44.02</heading>
<latitude>52.653726</latitude>
<longitude>-21.885421</longitude>
<status>In flight</status>
<datetime>1589962024</datetime>
</aircraftData>
<aircraftData>
<aircraftID>N02061</aircraftID>
<pilot>Jane D.</pilot>
<speed>132.00</speed>
<altitude>13008</altitude>
<heading>264.54</heading>
<latitude>19.510083</latitude>
<longitude>-153.950114</longitude>
<status>In flight</status>
<datetime>1589962042</datetime>
</aircraftData>
<airportData>
<name>John F. Kennedy Int. Airport</name>
<IATA>JFK</IATA>
<ICAO>KJFK</ICAO>
<date>1589932800</date>
<location>
<latitude>40.643585</latitude>
<longitude>-73.781927</longitude>
</location>
</airportData>
</flight>
Si un élément racine aircraftData a été spécifié, seules les données suivantes sont ingérées dans Velocity :
<aircraftData>
<aircraftID>N-X-211</aircraftID>
<pilot>Charles L.</pilot>
<speed>212.28</speed>
<altitude>20200</altitude>
<heading>44.02</heading>
<latitude>52.653726</latitude>
<longitude>-21.885421</longitude>
<status>In flight</status>
<datetime>1589962024</datetime>
</aircraftData>
<aircraftData>
<aircraftID>N02061</aircraftID>
<pilot>Jane D.</pilot>
<speed>132.00</speed>
<altitude>13008</altitude>
<heading>264.54</heading>
<latitude>19.510083</latitude>
<longitude>-153.950114</longitude>
<status>In flight</status>
<datetime>1589962042</datetime>
</aircraftData>
Une structure semblable à la suivante est alors dérivée :

Aplatir
Le paramètre Flatten (Aplatissement) détermine si les objets XML imbriqués doivent être répartis sur plusieurs champs. Le nom de ces nouveaux champs est créé en ajoutant des sous-éléments avec un trait de soulignement à l’élément de niveau supérieur, ou parent. L’exemple ci-dessous montre un élément location qui contient deux sous-éléments : latitude et longitude. Lors de l’aplatissement, l’élément location est divisé en deux champs, location_latitude et location_longitude.
Lors de l’aplatissement, les objets XML peuvent être imbriqués avec plusieurs niveaux de profondeur. Les noms des nouveaux champs sont créés simplement en ajoutant un trait de soulignement, suivi des noms des objets, jusqu’à ce que le sous-élément le plus profond soit atteint.
Prenons les données d’échantillon XML suivantes, en nous intéressant particulièrement aux éléments codes et location :
<?xml version="1.0" encoding="UTF-8"?>
<airportData>
<airport>
<name>John F. Kennedy Int. Airport</name>
<codes>
<IATA>JFK</IATA>
<ICAO>KJFK</ICAO>
</codes>
<status>Operational</status>
<date>1589932800</date>
<location>
<latitude>40.643585</latitude>
<longitude>-73.781927</longitude>
</location>
</airport>
<airport>
<name>Los Angeles Int. Airport</name>
<codes>
<IATA>LAX</IATA>
<ICAO>KLAX</ICAO>
</codes>
<status>Delayed</status>
<date>1589932800</date>
<location>
<latitude>33.942619</latitude>
<longitude>-118.420942</longitude>
</location>
</airport>
</airportData>
Si airport a été spécifié comme Root element (Élément racine) et que la case Flatten (Aplatir) est cochée, l’échantillon XML ci-dessus est traité comme suit, avec les sous-éléments codes et location répartis dans les champs correspondants :
<airport>
<name>John F. Kennedy Int. Airport</name>
<codes_IATA>JFK</codes_IATA>
<codes_ICAO>KJFK</codes_ICAO>
<status>Operational</status>
<date>1589932800</date>
<location_latitude>40.643585</location_latitude>
<location_longitude>-73.781927</location_longitude>
</airport>
<airport>
<name>Los Angeles Int. Airport</name>
<codes_IATA>LAX</codes_IATA>
<codes_ICAO>KLAX</codes_ICAO>
<status>Delayed</status>
<date>1589932800</date>
<location_latitude>33.942619</location_latitude>
<location_longitude>-118.420942</location_longitude>
</airport>
La structure est alors ingérée comme suit :

Exceptions d’aplatissement
Le paramètre Flattening Exemptions (Exceptions d’aplatissement) vous permet de spécifier un ou plusieurs noms d’élément XML à conserver en tant qu’élément de chaîne unique, sans les répartir dans des champs séparés.
Examinons l’échantillon XML suivant :
<?xml version="1.0" encoding="UTF-8"?>
<airportData>
<airport>
<name>John F. Kennedy Int. Airport</name>
<codes>
<IATA>JFK</IATA>
<ICAO>KJFK</ICAO>
</codes>
<status>Operational</status>
<date>1589932800</date>
<location>
<latitude>40.643585</latitude>
<longitude>-73.781927</longitude>
</location>
</airport>
<airport>
<name>Los Angeles Int. Airport</name>
<codes>
<IATA>LAX</IATA>
<ICAO>KLAX</ICAO>
</codes>
<status>Delayed</status>
<date>1589932800</date>
<location>
<latitude>33.942619</latitude>
<longitude>-118.420942</longitude>
</location>
</airport>
</airportData>
Si airport a été spécifié comme Root element (Élément racine), que la case Flatten (Aplatir) est cochée et qu’un paramètre Flattening Exemption (Exception d’aplatissement) de type codes a été spécifié, l’échantillon XML ci-dessus est traité comme suit. Notez que l’élément codes n’a pas été réparti par aplatissement. IATA et ICAO sont conservés en tant que sous-éléments.
<airport>
<name>John F. Kennedy Int. Airport</name>
<codes>
<IATA>JFK</IATA>
<ICAO>KJFK</ICAO>
</codes>
<status>Operational</status>
<date>1589932800</date>
<location_latitude>40.643585</location_latitude>
<location_longitude>-73.781927</location_longitude>
</airport>
<airport>
<name>Los Angeles Int. Airport</name>
<codes>
<IATA>LAX</IATA>
<ICAO>KLAX</ICAO>
</codes>
<status>Delayed</status>
<date>1589932800</date>
<location_latitude>33.942619</location_latitude>
<location_longitude>-118.420942</location_longitude>
</airport>
La structure est alors ingérée comme suit :

Considérations et limitations
Lorsque vous utilisez des données au format XML dans Velocity, vous devez prendre en compte certaines considérations et limitations importantes.
Est-ce que vos données XML ont des sous-éléments imbriqués ?
XML nécessite une hiérarchie d’éléments qui commence et s’achève avec un élément racine. Sous un élément racine, un nombre indéfini d’éléments et de sous-éléments supplémentaires peuvent être présents. Actuellement, Velocity dérive sa structure des éléments principaux qui se trouvent sous la racine spécifiée. Tous les sous-éléments supplémentaires situés sous les éléments principaux sont gérés comme des chaînes concaténées. Il est possible de traiter davantage les chaînes à l’aide d’outils d’analyse. Vous pouvez utiliser le paramètre Root element (Élément racine) pour définir une nouvelle racine dans votre document XML.
Les échantillons XML sont-ils représentatifs de l’ensemble de la structure ?
Dans un document XML, les éléments qui partagent un nom identique n’ont pas toujours les mêmes sous-éléments. Cela a un impact lors de la configuration, de la mise à jour ou de l’utilisation initiale d’un flux ou d’une source de données XML. Velocity échantillonne le flux de données ou les fichiers pour déterminer au mieux le format et la structure des données. Si, dans tous les échantillons renvoyés par le processus d’échantillonnage, il manque des éléments XML, car ces échantillons contiennent une structure différente, ces champs ne sont pas intégrés dans la structure du flux ou de la source de données.
Taille des fichiers XML
La taille de chaque fichier XML doit être inférieure à 100 Mo. Si vous avez davantage de données à ingérer, il est recommandé de les fractionner pour créer des fichiers d’une taille inférieure à 100 Mo chacun.
Vous avez un commentaire à formuler concernant cette rubrique ?