WebSphere Enterprise Service Bus, Version 6.2.0 Systèmes d'exploitation: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Comment obtenir/définir des valeurs ?

Vous pouvez exécuter une instruction get sur des données qui ont été définies dans un champ de la même manière que pour une autre valeur d'élément si le nom est connu.

Vous pouvez envoyer une instruction get avec la balise XPath "<name>" pour la résoudre. Si le nom est inconnu, il est possible de trouver la valeur en vérifiant les propriétés de l'instance comme ci-dessus. S'il y a plusieurs balises any, ou une balise any avec maxOccurs > 1, la séquence de l'objet de données devra être utilisée à la place s'il est important de déterminer quelle balise any est à l'origine des données.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:tns="http://AnyElemAny" 
 targetNamespace="http://AnyElemAny">
  <xsd:complexType name="AnyElemAny">
    <xsd:sequence>
      <!-- Handle all these any one way -->
      <xsd:any maxOccurs="3"/>
      <xsd:element name="marker1" type="xsd:string"/>
      <!-- Handle this any in another -->
      <xsd:any/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

La balise <any/> entraînant la mise en séquence de l'objet de données, il est possible de déterminer quelle valeur any a été définie en vérifiant dans la séquence la position des propriétés any.

Vous pouvez déterminer à quelle balise any les données d'instance appartiennent pour le XSD suivant en utilisant le code suivant :

	DataObject anyElemAny = ...
	Seqeuence seq = anyElemAny.getSequence();
	
	// Jusqu'à ce que l'élément marker1 ait été trouvé, toutes les données ouvertes
	// trouvées appartiennent à la première balise any
	boolean foundMarker1 = false;
	
	for (int i=0; i<seq.size(); i++)
	{
	    Property prop = seq.getProperty(i);
	    
	    // Vérifiez si la propriété est une propriété ouverte
	    si (prop.isOpenContent())
	    {
	        si (!foundMarker1)
	        {
	            // Doit être la première balise any car elle survient
	            // avant l'élément marker1
	            System.out.println("Found first any data: "+seq.getValue(i)); 
	        }
	        else
	        {
	            // Doit être la seconde balise any car elle survient
	            // après l'élément marker1
	            System.out.println("Found second any data: "+seq.getValue(i));
	         }
	    }
	    else
	    {
	        // Doit être l'élément marker1
	        System.out.println("Found marker1 data: "+seq.getValue(i));
	        foundMarker1 = true;
	    }
	}

Définir une valeur <any/> est effectué en créant une propriété d'élément global et en ajoutant cette valeur à la séquence.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
	xmlns:tns="http://GlobalElems" 
	targetNamespace="http://GlobalElems">
  <xsd:element name="globalElement1" type="xsd:string"/>
  <xsd:element name="globalElement2" type="xsd:string"/>
</xsd:schema>

	DataObject anyElemAny = ...
	Seqeuence seq = anyElemAny.getSequence();

	// Obtenir la propriété de l'élement global pour globalElement1
	Property globalProp1 = boXsdHelper.getGlobalProperty(http://GlobalElems, 
	"globalElement1", true);

	// Obtenir la propriété de l'élément global pour globalElement2
	Property globalProp2 = boXsdHelper.getGlobalProperty(http://GlobalElems, 
	"globalElement2", true);

	// Ajouter les données à la séquence pour la première balise any
	seq.add(globalProp1, "foo");
	seq.add(globalProp1, "bar");
	
	// Ajouter les données pour le marker1
	seq.add("marker1", "separator");  // ou anyElemAny.set("marker1", "separator")
	
	// Ajouter les données à la séquence pour la seconde balise any
	seq.add(globalProp2, "baz");

	// Il est maintenant possible d'accéder aux données avec une instruction get
	System.out.println(dobj.get("globalElement1"); // Affiche "[foo, bar]"
	System.out.println(dobj.get("marker1");        // Affiche "separator"
	System.out.println(dobj.get("globalElement2"); // Affiche "baz"

concept Rubrique concept

Conditions d'utilisation | Commentaires en retour


Icône d'horodatage Dernière mise à jour: 07 juillet 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cbo_howgetsetany.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
Ce centre d'information est mis en service par la technologie Eclipse (http://www.eclipse.org).