---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# XMLDocument2 - スコープ指定、グローバル

# XMLDocument2 - スコープ指定、グローバル {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：18分

XMLDocument2 API は、XML 文字列から XML データを解析および抽出するための JavaScript オブジェクトラッパーです。

この JavaScript クラスを使用して、XML 文字列からオブジェクト (通常は Web サービスの発動からの戻り値)、または ECC キューの XML ペイロードを作成します。JavaScript ビジネスルールで XMLDocument2 オブジェクトを使用すると、XML 要素と属性から直接、値のクエリーを実行できます。

XML 文字列はツリー構造であり、その構造の一部をノードといいます。XMLDocument2 オブジェクトは、要素とドキュメント要素の 2 つのノードタイプを処理します。要素ノードは、名前と、場合によっては属性と子ノードを持つノードです。ドキュメント要素ノードは、XML ツリーのルートノードです。親ノードを持たない唯一のノードです。  
注:  
この API は、スコープ対象のアプリケーションでもグローバルアプリケーションでも機能します。

## スコープ指定の XMLDocument2 - XMLDocument2() {#ariaid-title2}

XMLDocument2 オブジェクトを作成します。
{#r_ScopedXMLDocument2XMLDocument2__table_jqf_pkr_2r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 1. パラメーター]

{#r_ScopedXMLDocument2XMLDocument2__table_jqf_pkr_2r}

## スコープ指定の XMLDocument2 - XMLDocument2(GlideScriptableInputStream inputStream) {#ariaid-title3}

添付ファイルのストリームから XMLDocument2 オブジェクトを作成します。
{#r_SXMLDoc2-XMLDocument2_GSIS__table_qjv_tmt_3x__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| inputStream | GlideScriptableInputStream | XMLDocument2 オブジェクトがカプセル化する入力ストリーム。 |
[表 : 2. パラメーター]

{#r_SXMLDoc2-XMLDocument2_GSIS__table_qjv_tmt_3x}

## スコープ指定の XMLDocument2 - createElement(文字列 name) {#ariaid-title4}

要素ノードを作成して現在のノードに追加します。要素名は、パラメーターとして渡される文字列です。新しい要素にはテキストの子ノードがありません。
{#r_ScopedXMLDocument2CreateElement_String__table_plz_zr4_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 新しい要素の名前。 |
[表 : 3. パラメーター]

{#r_ScopedXMLDocument2CreateElement_String__table_plz_zr4_1r} {#r_ScopedXMLDocument2CreateElement_String__table_efn_ffc_2r__entry__2}

| タイプ | 説明 |
|-|-|
| XMLNode | 現在の XML ノード。 |
[表 : 4. 返される内容]

{#r_ScopedXMLDocument2CreateElement_String__table_efn_ffc_2r}  

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    xmlDoc.createElement("new2"); 
     
    gs.info(xmlDoc);

出力：

    ?xml version="1.0" encoding="UTF-8"?>
    <test>  
        <one>    
            <two att="xxx">abcd1234</two>    
                <three att="yyy" boo="yah">1234abcd</three>    
            <two>another</two>  
        </one>  
        <number>1234</number>
        <new2></new2>
    </test>

## スコープ指定の XMLDocument2 - createElementWithTextValue(文字列 name, 文字列 value) {#ariaid-title5}

テキストの子ノードを持つ要素ノードを作成して現在のノードに追加します。
{#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_rxl_qs4_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 追加する要素の名前。 |
| value | 文字列 | 要素のテキスト値。 |
[表 : 5. パラメーター]

{#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_rxl_qs4_1r} {#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_txl_qs4_1r__entry__2}

| タイプ | 説明 |
|-|-|
| XMLNode | 現在の XML ノード。 |
[表 : 6. 返される内容]

{#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_txl_qs4_1r}  

    var xmlString = "<test>" +
        "  <one>" +
        "    <two att=\"xxx\">abcd1234</two>" +
        "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
        "    <two>another</two>" +
        "  </one>" +
        "  <number>1234</number>" +
        "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    xmlDoc.createElementWithTextValue("new", "test");
    gs.info(xmlDoc);

出力：

    <?xml version="1.0" encoding="UTF-8"?>
        <test>
            <one>
                <two att="xxx">abcd1234</two>    
                <three att="yyy" boo="yah">1234abcd</three>    
                <two>another</two>  
            </one>  
            <number>1234</number>
            <new>test</new>
        </test>

## スコープ指定の XMLDocument2 - getDocumentElement() {#ariaid-title6}

XMLdocument2 オブジェクトのドキュメント要素ノードを取得します。ドキュメント要素ノードはルートノードです。
{#r_ScopedXMLDocument2GetDocumentElement__table_cvr_4kr_2r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 7. パラメーター]

{#r_ScopedXMLDocument2GetDocumentElement__table_cvr_4kr_2r} {#r_ScopedXMLDocument2GetDocumentElement__table_t2h_k54_1r__entry__2}

| タイプ | 説明 |
|-|-|
| XMLNode | ドキュメント要素。 |
[表 : 8. 返される内容]

{#r_ScopedXMLDocument2GetDocumentElement__table_t2h_k54_1r}  

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    //returns the root node of the document tree.
    var rootNode = xmlDoc.getDocumentElement();
    gs.info(rootNode.getTextContent());

出力：

    abcd1234    1234abcd    another    1234

## スコープ指定の XMLDocument2 - getFirstNode(文字列 xPath) {#ariaid-title7}

指定された xPath の最初のノードを取得します。
このメソッドは、述語の xPath 式のサブセットのみをサポートしています。例えば、次のドキュメントがあるとします。

    <store> 
        <resources company="ABC Inc"> 
            <resources type="servers" /> 
        </resources> 
        <resources company="XYZ Inc"> 
            <resource type="bookstore"> 
                <book> 
                    <title>Windows</title> 
                    <price>10</price> 
                </book> 
                <book year="2009"> 
                    <title>Harry Potter</title> 
                    <price>50</price> 
                </book> 
                <book year="1999"> 
                    <title>Learning XML</title> 
                    <price>120</price> 
                </book> 
                <book year="2019"> 
                    <title>Learning Java</title> 
                    <price>99</price> 
                </book> 
            </resource> 
        </resources> 
    </store> 

このメソッドは、以下に挙げる述語を含む xPath 式をサポートしています。

    "/store/resources/resource[@type='bookstore']/book[@year='1999']", 
    "/store/resources/resource[@type='bookstore']/book[@year]", 
    "/store/resources/resource[@type='bookstore']/book[price > 100]" 

しかし、以下に挙げる述語を含む xPath 式はサポートしません。

    "/store/resources/resource[@type='bookstore']/book[2]", 
    "/store/resources/resource[@type='bookstore']/book[last()]", 
    "/store/resources/resource[@type='bookstore']/book[position()>2]" 

これを回避するには、`"/store/resources/resource[@type='bookstore']/book" ` などの述語なしで xPath を使用し、getFirstNode() および [getNextNode()](https://servicenow-prod.fluidtopics.net/BZgu_8cumIWb86I6Btksmw#r_ScopedXMLDocument2GetNextNode_Object "指定されたノードの次のノードを取得します。") メソッドを使用してスクリプト内のノードをフィルタリングします。
{#r_ScopedXMLDocument2GetFirstNode_String__table_wg1_nq4_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| xPath | 文字列 | ノードを取得する xPath。 |
[表 : 9. パラメーター]

{#r_ScopedXMLDocument2GetFirstNode_String__table_wg1_nq4_1r} {#r_ScopedXMLDocument2GetFirstNode_String__table_yg1_nq4_1r__entry__2}

| タイプ | 説明 |
|-|-|
| XMLNode | 最初のノード。 |
[表 : 10. 返される内容]

{#r_ScopedXMLDocument2GetFirstNode_String__table_yg1_nq4_1r}  

    var xmlString = "<test>" +
      "  <one>" +
      "    <two att=\"xxx\">abcd1234</two>" +
      "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
      "    <two>another</two>" +
      "  </one>" +
      "  <number>1234</number>" +
      "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    var foo = xmlDoc.getFirstNode('/test/one/two');
    gs.info(foo.getTextContent());

出力：

    abcd1234

## スコープ指定の XMLDocument2 - getNextNode(オブジェクト current) {#ariaid-title8}

指定されたノードの次のノードを取得します。
{#r_ScopedXMLDocument2GetNextNode_Object__table_ysr_fr4_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| current | オブジェクト | 現在のノード。 |
[表 : 11. パラメーター]

{#r_ScopedXMLDocument2GetNextNode_Object__table_ysr_fr4_1r} {#r_ScopedXMLDocument2GetNextNode_Object__table_atr_fr4_1r__entry__2}

| タイプ | 説明 |
|-|-|
| XMLNode | 次のノード。 |
[表 : 12. 返される内容]

{#r_ScopedXMLDocument2GetNextNode_Object__table_atr_fr4_1r}  

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    var foo = xmlDoc. getFirstNode('/test/one/two');
    var foo2 = xmlDoc.getNextNode(foo);
    gs.info(foo.getTextContent());
    gs.info(foo2.getTextContent());

出力：

    abcd1234

    another

## スコープ指定の XMLDocument2 - getNode(文字列 xPath) {#ariaid-title9}

xPath で指定されたノードを取得します。
注:  
このメソッドは、ドキュメント全体を解析して xPath 式を照合するため、小さなドキュメントで使用することを目的としています。ドキュメントが大きすぎると、メモリー不足エラーが発生する可能性があります。大きなドキュメントの場合は、[getFirstNode(文字列 xPath)](https://servicenow-prod.fluidtopics.net/BZgu_8cumIWb86I6Btksmw#r_ScopedXMLDocument2GetFirstNode_String "指定された xPath の最初のノードを取得します。") および [getNextNode(オブジェクト current)](https://servicenow-prod.fluidtopics.net/BZgu_8cumIWb86I6Btksmw#r_ScopedXMLDocument2GetNextNode_Object "指定されたノードの次のノードを取得します。") メソッドを使用します。これらのメソッドは、ドキュメント全体を解析せずにドキュメントをストリーミングするように設計されています。
{#r_ScopedXMLDocument2GetNode_String__table_yhv_xp4_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| xPath | 文字列 | 取得するノードの xPath。 |
[表 : 13. パラメーター]

{#r_ScopedXMLDocument2GetNode_String__table_yhv_xp4_1r} {#r_ScopedXMLDocument2GetNode_String__table_a3v_xp4_1r__entry__2}

| タイプ | 説明 |
|-|-|
| XMLNode | 現在の XML ノード。 |
[表 : 14. 返される内容]

{#r_ScopedXMLDocument2GetNode_String__table_a3v_xp4_1r}  

    /*
     * Checks if given node indeed of given tag.
     * Params:
     *  tag - String, name of tag to check
     *  node - XMLNode, node in which to check for the tag
     * Returns:
     *  true, if tag is present
     *  false, otherwise
     */
    function isNodeOfTag (node, tag) {
      try {
        if (tag == node.getNodeName()) {
          gs.info("Given node belongs to tag " + tag);
          return true;
        }
      } catch (error) {
        gs.error("Given node might not belong to tag " + tag + ". Error while checking: " + error);
        return false;
      }
    }

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";

    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);

    var node = xmlDoc.getNode("/test/one/two"); // tag 'two' is present in this XML.
    isNodeOfTag(node, "two");

    var node = xmlDoc.getNode("/test/one/four"); // tag 'four' is not present in this XML.
    isNodeOfTag(node, "four");

出力：

    Given node belongs to tag two
    Given node might not belong to tag four. Error while checking: java.lang.NullPointerException

## スコープ指定の XMLDocument2 - getNodeText(文字列 xPath) {#ariaid-title10}

指定された XPath で参照されるノードからテキストの子ノードをすべて取得します。
{#r_ScopedXMLDocument2GetNodeText_String__table_dgq_2p4_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| xPath | 文字列 | 取得するテキストの xPath。 |
[表 : 15. パラメーター]

{#r_ScopedXMLDocument2GetNodeText_String__table_dgq_2p4_1r} {#r_ScopedXMLDocument2GetNodeText_String__table_fgq_2p4_1r__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | XPath 内のテキストの子。 |
[表 : 16. 返される内容]

{#r_ScopedXMLDocument2GetNodeText_String__table_fgq_2p4_1r}  

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    gs.info(xmlDoc.getNodeText("//two"));

出力:

    abcd1234

## スコープ指定の XMLDocument2 - parseXML(文字列 xmlDoc) {#ariaid-title11}

XML 文字列を解析し、XMLDocument2 オブジェクトにロードします。
{#r_ScopedXMLDocument2ParseXML_String__table_rxk_n44_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| xmlDoc | 文字列 | 解析するドキュメント。 |
[表 : 17. パラメーター]

{#r_ScopedXMLDocument2ParseXML_String__table_rxk_n44_1r} {#r_ScopedXMLDocument2ParseXML_String__table_scn_y2c_2r__entry__2}

| タイプ | 説明 |
|-|-|
| ブーリアン | 内容が解析されたかどうかを示すフラグ。 |
[表 : 18. 返される内容]

{#r_ScopedXMLDocument2ParseXML_String__table_scn_y2c_2r}  
この例では、xmlString を解析し、xmlDocument2 オブジェクトにロードします。

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    var rootNode = xmlDoc.getDocumentElement();

## スコープ指定の XMLDocument2 - setCurrentElement(XMLNode element) {#ariaid-title12}

パラメーターとして渡されたノードを現在のノードにします。
{#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_rbn_wt4_1r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| 要素 | XMLNode | 現在のノードとして設定する要素ノード。 |
[表 : 19. パラメーター]

{#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_rbn_wt4_1r} {#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_pph_y2c_2r__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 20. 返される内容]

{#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_pph_y2c_2r}  

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    //returns the root node of the document tree.
    var rootNode = xmlDoc.getDocumentElement(); //returns org.w3c.dom.Element
    // sets the root node as the current element
    xmlDoc.setCurrentElement(rootNode);

## スコープ付き XMLDocument2 - setEnableCDATAReporting(ブール enable) {#ariaid-title13}

解析後にノードを CDATA として扱うか、通常のテキストとして扱うかを設定します。CDATAレポートはデフォルトで無効になっています。
このメソッドは [スコープ指定の XMLDocument2 - parseXML(文字列 xmlDoc)](https://servicenow-prod.fluidtopics.net/BZgu_8cumIWb86I6Btksmw#r_ScopedXMLDocument2ParseXML_String "XML 文字列を解析し、XMLDocument2 オブジェクトにロードします。") で呼び出す必要があります。

関連項目：[スコープ付き XMLNode - isCDATANode()](https://servicenow-prod.fluidtopics.net/CvEeoEScKQabXk8CC2PdAw#SXMLN_isCDATANode "CDATA ノードを別個のノードとして保持するかどうかを示します。")。
{#SXMLD_setEnableCDATAReporting_B__table_bk3_rjy_3x__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| enable | ブール | CDATA ノードを CDATA ノードとして処理するか、通常のテキストノードとして処理するかを示すフラグ。 有効な値： * true: CDATA レポートを有効にします。 * false: CDATAノードを解析後に通常のテキストノードとして処理し、隣接するテキストと連結します。 {#SXMLD_setEnableCDATAReporting_B__ul_fj4_svh_lzb} デフォルト：False |
[表 : 21. パラメーター]

{#SXMLD_setEnableCDATAReporting_B__table_bk3_rjy_3x} {#SXMLD_setEnableCDATAReporting_B__table_ck3_rjy_3x__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 22. 返される内容]

{#SXMLD_setEnableCDATAReporting_B__table_ck3_rjy_3x}  
次の例は、CDATA レポートがアクティブ化された要素で CDATA がどのように解析されるかを示しています。content.getFirstChild() の結果は、テキスト値 another を保持する要素です。この要素には、CDATA 型として識別する情報が内部的に含まれています。content.getLastChild() の結果は、テキスト値要素を保持する要素です。この要素には、内部的に情報がテキスト型として含まれています。

    var xmlString = "<test>" +
      "  <one>" +
      "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
      "    <two><![CDATA[another]]>element</two>" +
      "  </one>" +
      "  <number>1234</number>" 
      "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.setEnableCDATAReporting(true); // Enable CDATA reporting
    xmlDoc.parseXML(xmlString);
    var content = xmlDoc.getFirstNode('/test/one/two');
    gs.info(content.getFirstChild().getTextContent()); // prints "another"
    gs.info(content.getLastChild().getTextContent()); // prints "element"

出力:

    another
    element

注:  
この例では、CDATAレポートをアクティブにしないと、子全体がCDATAをテキストとして連結し、各行に残りのテキスト(要素)を次のように連結します。

    anotherelement
    anotherelement

## スコープ指定の XMLDocument2 - setNamespaceAware(ブーリアン aware) {#ariaid-title14}

true に設定すると、XMLDocument2 オブジェクトは XML 名前空間を使用してドキュメントを処理します。
これを設定しないと、名前空間を持つ XML ドキュメントが正しく列挙されず、XPath の検索に失敗します。
{#r_SXML-setNamespaceAware_B__table_rfn_p4t_3x__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| aware | ブーリアン | true の場合、XMLDocument2 オブジェクトは XML 名前空間を使用してドキュメントを処理します。 |
[表 : 23. パラメーター]

{#r_SXML-setNamespaceAware_B__table_rfn_p4t_3x} {#r_SXML-setNamespaceAware_B__table_sfn_p4t_3x__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 24. 返される内容]

{#r_SXML-setNamespaceAware_B__table_sfn_p4t_3x}

## スコープ指定の XMLDocument2 - toString() {#ariaid-title15}

XML を含む文字列を返します。
{#r_ScopedXMLDocument2ToString__table_ody_nkr_2r__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 25. パラメーター]

{#r_ScopedXMLDocument2ToString__table_ody_nkr_2r} {#r_ScopedXMLDocument2ToString__table_lvt_x54_1r__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | XML を含む文字列。 |
[表 : 26. 返される内容]

{#r_ScopedXMLDocument2ToString__table_lvt_x54_1r}  

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    gs.info(xmlDoc.toString());

出力：読みやすいように出力に改行が追加されました。

    <?xml version="1.0" encoding="UTF-8"?>
    <test>  
    <one>    
    <two att="xxx">abcd1234</two>    
    <three att="yyy" boo="yah">1234abcd</three>    
    <two>another</two>  
    </one>  
    <number>1234</number>
    </test>


