API version 1
- ‐

XmlDocument

DOMツリーのルートノード(Documentノード)を定義するクラスです。

XML ? Array/Map変換ルール

XMLとgetObjectsetObjectメソッドで取得・設定されるオブジェクトとは以下のような関係となります。

  • 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>