Si vous travailler sur un objet de données comportant une séquence, il est important de connaître l'ordre dans lequel les données sont définies. Vous devez donc faire attention à l'ordre dans lequel les données sont définies.
Un objet de données qui n'est pas mis en séquence permet l'accès à un ensemble dans un ordre aléatoire. Le fonctionnement est identique à un mappage dans lequel toutes les clés sont définies sur les mêmes valeurs. L'ordre dans lequel les clés sont définies n'a pas d'importance, les données au sein du mappage étant identiques et étant sérialisées en XML d'une manière identique.
Lorsqu'un objet de données est mis en séquence, l'ordre dans lequel les données ont été définies est enregistré dans la séquence, comme s'il s'agissait d'ajouter des données à une liste. Ainsi, deux manières d'accéder aux données sont possibles : par paires nom/valeur (les API d'objet de données) et selon l'ordre dans lequel elles ont été définies (les API de séquence). Vous pouvez utiliser les API d'objet de données set(...) ou de séquence add(...) pour conserver la structure. Cet ordre a un incidence sur la manière dont le XML est sérialisé.
Prenons par exemple le XSD de la balise <all/> ci-dessous. Lorsque les méthodes set sont appelées dans l'ordre suivant, le XML suivant est produit lorsqu'il est sérialisé :
DataObject all = ... all.set("element1", "foo"); all.set("element2", "bar"); <?xml version="1.0" encoding="UTF-8"?> <p:All xsi:type="p:All" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:p="http://All"> <element1>foo</element1> <element2>bar</element2> </p:All>
Si, à la place, les méthodes set sont appelées dans l'ordre inverse, le XML suivant est produit lorsque l'objet métier est sérialisé :
DataObject all = ... all.set("element2", "bar"); all.set("element1", "foo"); <?xml version="1.0" encoding="UTF-8"?> <p:All xsi:type="p:All" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:p="http://All"> <element2>bar</element2> <element1>foo</element1> </p:All>
Si l'ordre de la séquence doit être modifié, la classe de la séquence a les méthodes add, remove et move pour permettre à l'utilisateur de modifier l'ordre de la séquence.