XML マップにおける型のサポート
このトピックでは、XML マップを使用して変換する Java タイプのデフォルト スキーマ出力について説明します。XML マップを使用して送信 XML メッセージを作成する場合、WebLogic Server はこのトピックの説明のとおりに Java タイプを XML スキーマ タイプにマッピングします。このトピックでは、XML マップでサポートされる各 Java タイプをリストし、それぞれの対応するスキーマ定義を示します。
注意: デフォルトの動作は、JSX ファイル内の ECMAScript で生成された XML では異なります(XML マップが使用されても)。スクリプトを使用して作成した XML の場合、デフォルトはシンプルな型なしの XML です。XML 変数を作成し、それらにリテラルのスキーマ属性が含まれる XML 値を割り当てて、スクリプトの必要なところでスキーマを示す必要があります。
XML マップでサポートされる Java タイプは以下のとおりです。
このリストの各項目では、以下の情報が示されます。
その型の変数を宣言するために使用される Java コード
String a = "a string";
XML マップでのその変数の例
<mytag>{a}</mytag>
マップで生成(受信メッセージの場合は処理)されるプレーンな XML の例
<mytag>a string</mytag>
WSDL ファイルで変数がどのように記述されるのかを示す例。WebLogic Server が変換を処理するので、WebLogic Workshop の使用時にこの情報は必要ありません。ただし、メッセージを直接処理する必要のある他の開発モデルでは、この情報が役に立ちます。
<s:element name="mytag" type="s:string"/>
Java 変数 |
String a = "a string"; |
XML マップでの使い方 |
<mytag>{a}</mytag> |
結果の XML |
<mytag>a string</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:string"/> |
Java 変数 |
boolean f = true; |
XML マップでの使い方 |
<mytag>{f}<mytag> |
結果の XML |
<mytag>true</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:boolean"/> |
Java 変数 |
byte b = 250; |
XML マップでの使い方 |
<mytag>{b}<mytag> |
結果の XML |
<mytag>250</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:byte"/> |
Java 変数 |
short s = 537; |
XML マップでの使い方 |
<mytag>{s}</mytag> |
結果の XML |
<mytag>537</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:shortint"/> |
Java 変数 |
int i = 12345; |
XML マップでの使い方 |
<mytag>{i}</mytag> |
結果の XML |
<mytag>12345</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:int"/> |
Java 変数 |
long l = 123456789; |
XML マップでの使い方 |
<mytag>{l}</mytag> |
結果の XML |
<mytag>123456789</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:longint"/> |
Java 変数 |
float f = 1.23f; |
XML マップでの使い方 |
<mytag>{f}</mytag> |
結果の XML |
<mytag>1.23</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:floatingpoint"/> |
Java 変数 |
float d = 1.2345; |
XML マップでの使い方 |
<mytag>{f}</mytag> |
結果の XML |
<mytag>1.2345</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:doublefloat"/> |
Java 変数 |
java.util.Date date= new java.util.Date(); |
XML マップでの使い方 |
<mytag>{date}</mytag> |
結果の XML |
<mytag>2002-04-14T13:57:12.046Z</mytag> |
結果のスキーマ |
<s:element name="mytag" type="s:dateTime"/> |
Java 変数 |
String[] sa = new String[] {"first", "second", "third"}; |
XML マップでの使い方 |
<mytag>{sa}</mytag> |
結果の XML |
<mytag> <String>first</String> <String>second</String> <String>third</String> </mytag> |
結果のスキーマ |
<s:element name="mytag" type="s0:ArrayOfString"/> <s:complexType name="ArrayOfString"> <s:sequence> <s:element minOccurs="0" maxOccurs="unbounded" name="String" nillable="true" type="s:string" /> </s:sequence> </s:complexType> |
以下の例は、リスト全体が 1 単位としてマッピングされるときにどのように XML に変換されるのかを示しています。<xm:multiple> で XML 値の繰り返しを処理するおよび<xm:bind> で変数を宣言するで説明されているように、リストの個々のメンバーをマッピングすることもできます。
XML マップは、以下のような Collection クラスのサブクラスをサポートします。
Collection
AbstractCollection
AbstractList
AbstractSequentialList
LinkedList
ArrayList
Vector
AbstractSet
HashSet
TreeSet
List
ただし、以下はサポートされていません。
AbstractMap
HashMap
TreeMap
WeakHashMap
Map
HashTable
Iterator
ListIterator
Enumeration
Java 変数 |
ArrayList list = new ArrayList(); list.add("first"); list.add(new Integer(71)); |
XML マップでの使い方 |
<mytag>{list}</mytag> |
結果の XML |
<mytag> <anyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">first</anyType> <anyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">second</anyType> <anyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:int">71</anyType> </mytag> |
結果のスキーマ |
<s:element name="mytag" type="s0:List" /> <s:complexType name="List"> <s:sequence> <s:element minOccurs="0" maxOccurs="unbounded" name="anyType" nillable="true" type="s:anyType" /> </s:sequence> </s:complexType> |
以下の例は、構造体全体が 1 単位としてマッピングされるときにどのように XML に変換されるのかを示しています。 Java データ メンバーにバインドするで説明されているように、構造体の個々のメンバーをマッピングすることもできます。
Java 変数 |
static public class Structure { public int intField = 43; public String stringField = "member2"; } Structure s = new Structure(); |
XML マップでの使い方 |
<mytag>{s}</mytag> |
結果の XML |
<mytag> <intField>43</intField> <stringField>member2</stringField> </mytag> |
結果のスキーマ |
<s:element name="mytag" type="s0:Structure" /> <s:complexType name="Structure"> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="intField" type="s:int" /> <s:element minOccurs="1" maxOccurs="1" name="stringField" nillable="true" type="s:string" /> </s:sequence> </s:complexType> |
以下の例は、get と set のペアが 1 単位としてマッピングされるときにどのように XML に変換されるのかを示しています。 Java データ メンバーにバインドするで説明されているように、個々のメンバーをマッピングすることもできます。
Java 変数 |
static public class Bean { public String getName() { return theName; } public void setName(String s) { theName = s; } private String theName = "A name"; public int getNumber() { return theNumber; } public void setNumber(int i) { theNumber = i; } private int theNumber = 8; } Bean b = new Bean(); |
XML マップでの使い方 |
<mytag>{b}</mytag> |
結果の XML |
<mytag> <name>A name</name> <number>8</number> </mytag> |
結果のスキーマ |
<s:element name="mytag" type="s0:Bean" /> <s:complexType name="Bean"> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="name" nillable="true" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="number" type="s:int" /> </s:sequence> </s:complexType> |
Java 変数 |
Document myDocument = new weblogic.apache.xerces.dom.DocumentImpl(); Text text = myDocument.createTextNode("This is a root element"); Element root = myDocument.createElement("myRootElement"); root.appendChild(text); myDocument.appendChild(root); |
XML マップでの使い方 |
<mytag>{root}</mytag> |
結果の XML |
<mytag> <myRootElement>This is a root element</myRootElement> <mytag> |
結果のスキーマ |
<s:element name="mytag"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="mytag"> <s:complexType mixed="true"> <s:sequence> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> |
Java 変数 |
Document myDocument = new weblogic.apache.xerces.dom.DocumentImpl(); DocumentFragment frag = myDocument.createDocumentFragment(); Text text = myDocument.createTextNode("Some fragment text"); Element sibling = myDocument.createElement("testElement"); sibling.appendChild(text); frag.appendChild(sibling); Text text2 = myDocument.createTextNode("More fragment text"); Element sibling2 = myDocument.createElement("testElement2"); sibling2.appendChild(text2); frag.appendChild(sibling2); |
XML マップでの使い方 |
<mytag>{frag}</mytag> |
結果の XML |
<mytag> <testElement>Some fragment text</testElement> <testElement2>More fragment text</testElement2> </mytag> |
結果のスキーマ |
<s:element name="mytag"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="mytag"> <s:complexType mixed="true"> <s:sequence> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> |