API version 1
- ‐
XmlDocument¶
DOMツリーのルートノード(Documentノード)を定義するクラスです。
XML – Array/Map変換ルール¶
XMLとgetObject・setObjectメソッドで取得・設定されるオブジェクトとは以下のような関係となります。
- XMLの要素ノードはMapオブジェクトの要素と対応し、要素名が添字となります。
- 同名の要素ノードが同階層に複数存在する場合は、要素名に対応するMapの要素の値がArrayとなります。 各要素ノードはArrayの要素と対応します。
- 要素ノードに対応するオブジェクトの要素はMapを値とし、Mapの要素が属性ノードや子供ノードに対応します。
- 属性ノードは属性名の前に
"@"
を付けたものをMapの添字とし、属性値を値とします。 - 要素ノードが属性ノードを含まず、子供ノードがテキストノード1つのみの場合は、対応するオブジェクトの要素の値はMapではなくテキストノードの値となります。
- 属性ノードやその他の子供ノードがある場合は、テキストノードは空文字列をMapの添字とし、テキストを値とします。
- setObjectメソッドで設定するオブジェクトの最上位の階層の状態によって、以下のようなXMLが設定されます。
- 要素数1のMapの場合、その要素がルートノードになります。
- 複数の要素を持つMapの場合、要素名 “root” でルートノードが設定され、Mapの要素はその子要素になります。
- Arrayの場合、要素名 “root” でルートノードが設定され、その子として要素名 “array” でArrayの要素に対応する要素ノードが設定されます。
(例)
最上位が要素数1のMap
オブジェクト:
var root = new Map();
root["object"] = new Map();
root["object"]["@name"] = "frm";
root["object"]["property"] = new Map();
root["object"]["property"]["@name"] = "fgColor";
root["object"]["property"]["@type"] = "Color";
root["object"]["property"]["property"] = new Array();
root["object"]["property"]["property"][0] = new Map();
root["object"]["property"]["property"][0]["@name"] = "r";
root["object"]["property"]["property"][0][""] = 20;
root["object"]["property"]["property"][1] = new Map();
root["object"]["property"]["property"][1]["@name"] = "g";
root["object"]["property"]["property"][1][""] = 10;
root["object"]["property"]["property"][2] = new Map();
root["object"]["property"]["property"][2]["@name"] = "b";
root["object"]["property"]["property"][2][""] = 250;
root["object"]["textonly"] = "テキスト";
root["object"]["attronly"] = new Map();
root["object"]["attronly"]["@name"] = "attr";
XML:
<?xml version="1.0"?>
<object name="frm">
<property name="fgColor" type="Color">
<property name="r">20</property>
<property name="g">10</property>
<property name="b">250</property>
</property>
<textonly>テキスト</textonly>
<attronly name="attr"/>
</object>
最上位が要素数3のMap
オブジェクト-2:
var root = new Map();
root["A"] = new Map();
root["A"]["integer"] = 1;
root["A"]["string"] = "text";
root["A"]["number"] = 1.5;
root["B"] = new Map();
root["B"]["@attr"] = "attribute";
root["B"][""] = "text with attribute";
root["C"] = "text only";
XML-2:
<?xml version="1.0"?>
<root>
<A>
<integer>1</integer>
<string>text</string>
<number>1.5</number>
</A>
<B attr="attribute">text with attribute</B>
<C>text only</C>
</root>
最上位がArray
オブジェクト-3:
var root = new Array();
root[0] = new Map();
root[0]["integer"] = 1;
root[0]["string"] = "text";
root[0]["number"] = 1.5;
root[1] = new Map();
root[1]["@attr"] = "attribute";
root[1][""] = "text with attribute";
root[2] = "text only";
XML-3:
<?xml version="1.0"?>
<root>
<array>
<integer>1</integer>
<string>text</string>
<number>1.5</number>
</array>
<array attr="attribute">text with attribute</array>
<array>text only</array>
</root>