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


---

# XMLStreamingBuilder - スコープ指定

# XMLStreamingBuilder - スコープ指定 {#ariaid-title1}

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

大規模な XML ペイロードをビルドするためのビルダーオブジェクトを作成し、それを REST または SOAP 要求で使用して大量のデータをサードパーティ API に送信します。非ストリーミングオプション用の XML 文字列としてペイロードを作成することもできます。
これらのメソッドを ワークフロースタジオ スクリプトステップで `sn_ih` 名前空間識別子とともに使用します。たとえば、この API を使用して ワークフロースタジオ スクリプトステップで XML ペイロードを作成し、戻り値を REST ステップに渡して、要求をサードパーティサービスに送信できます。詳細については、「ワークフロースタジオ [スクリプトステップ](https://www.servicenow.com/docs/access?context=javascript-step-action-designer&version=xanadu&pubname=xanadu-build-workflows&ft:locale=en-US)」を参照してください。  
注:  
この API は ワークフロースタジオ 環境内でのみ使用できます。

## API 呼び出し順 {#XMLStreamingBuilderScopedAPI__section_j2q_1ll_jlb}

XML ペイロードを生成するには、まず XMLStreamingBuilder を使用してビルダーオブジェクトをインスタンス化し、次に XMLStreamingAPI クラスのメソッドを呼び出します。  

1. XMLStreamingBuilder：ビルダーオブジェクトを作成する
:   下記のメソッドを次の順番で使用して、ビルダーオブジェクトを作成します。  
    1. XMLStreamingBuilder()：XMLStreamingBuilder オブジェクトをインスタンス化します。
    2. withAttachment()：オプション。添付ファイルとして XML ドキュメントを作成し、ストリーミング添付ファイル \[streaming_attachment\] テーブルに格納します。このメソッドを呼び出さない場合、API はペイロードを XML 文字列としてビルドします。
    3. expiresAt()：オプション。添付ファイルの有効期限が切れる時刻を設定します。デフォルトは false です。withAttachment() メソッドも呼び出す必要があります。
    4. build()：XMLStreamingAPI オブジェクトを返します。
    {#XMLStreamingBuilderScopedAPI__ol_gvr_k2k_jlb}

2. XMLStreamingAPI：XML ペイロードをビルドする
:   下記のメソッドを次の順番で使用して、XML ペイロードを作成します。  
    1. startDocument()： XML ドキュメントの最上位の親要素を作成します。
    2. XML ドキュメントに子要素を生成するメソッド：writeTextElement()、startElement()、writeArray() など。
    3. 要素の属性を生成するメソッド：writeAttribute()、writeNamespace()、writeDtd() など。
    4. endElement()： XML 要素を閉じます。
    5. endDocument： 最上位の親要素を閉じます。
    6. getXMLString() または getAttachmentId()：作成した XML 文字列または添付ファイル ID を返します。
    7. close()：XMLStreamingAPI オブジェクトを閉じます。
    {#XMLStreamingBuilderScopedAPI__ol_hvr_k2k_jlb}

## サイズ制限 {#XMLStreamingBuilderScopedAPI__section_vrl_jvs_1mb}

この API を介して生成されたペイロードは、次のサイズ制限を超えることはできません。  
* 添付ファイル：200 MB
* 文字列：5 MB
{#XMLStreamingBuilderScopedAPI__ul_llq_msw_3lb}  
次の例では、XML ドキュメントを作成し、定義された有効期限と一緒にストリーミング添付ファイル \[streaming_attachment\] テーブルに格納する方法を示します。  


    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.

      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

一方この例は、スクリプトステップで API を使用してペイロードを XML 文字列として作成する方法を示しています。このオプションを使用すると、5 MB 未満のペイロードを作成できます。  

    (function execute(inputs, outputs) {

      var builder = new sn_ih.XMLStreamingBuilder().build();
      
      builder.startDocument("Employee")
        .enablePrettyPrint()
        .writeTextElement("firstName","John")
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address")
          .writeTextElement("streetAddress", "21 2nd Street")
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement()
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument()

      outputs.payload = builder.getXMLString();
      
    })(inputs, outputs);

出力：  

    <?xml version="1.0" encoding="UTF-8"?>
    <firstName>John</firstName>
    <lastName>Smith</lastName>
    <age>25</age>
    <address>
      <streetAddress>21 2nd Street</streetAddress>
      <city>Santa Clara</city>
      <state>CA</state>
      <postalCode>11111</postalCode>
    </address>
    <phoneNumber>
      <type>home</type>
      <number>212 555-1234</number>
      <type>fax</type>
      <number>646 555-4567</number>
    </phoneNumber>

## XMLStreamingBuilder - XMLStreamingBuilder() {#ariaid-title2}

XMLStreamingBuilder オブジェクトをインスタンス化します。
{#XSB-XMLStreamingBuilder__table_ogh_vhz_clb__entry__3}

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

{#XSB-XMLStreamingBuilder__table_ogh_vhz_clb}  
この例では、`builder` オブジェクトをインスタンス化する方法を示します。

    var builder = new sn_ih.XMLStreamingBuilder()

## XMLStreamingBuilder - build() {#ariaid-title3}

XMLStreamingAPI オブジェクトを返します。
{#XSB-build__table_cr5_yms_jlb__entry__3}

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

{#XSB-build__table_cr5_yms_jlb} {#XSB-build__table_dr5_yms_jlb__entry__2}

| タイプ | 説明 |
|-|-|
| XMLStreamingAPI | ペイロードをビルドするためのストリーミング XML オブジェクト。 |
[表 : 3. 返される内容]

{#XSB-build__table_dr5_yms_jlb}  
次の例では、XML ドキュメントを作成し、定義された有効期限と一緒にストリーミング添付ファイル \[streaming_attachment\] テーブルに格納する方法を示します。


    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.

      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

## XMLStreamingBuilder - expiresAt(オブジェクト expiresAt) {#ariaid-title4}

添付ファイルの有効期限が切れる時刻を設定します。withAttachment() メソッドも呼び出す必要があります。
{#XSB-expiresAt_O__table_kc4_25s_jlb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| expiresAt | [GlideDateTime](https://servicenow-prod.fluidtopics.net/xWri1nmJyGLw7m~IPzfcdg#c_GlideDateTimeScoped "スコープ指定された GlideDateTime クラスは、GlideDateTime オブジェクトに対する操作を実行するためのメソッドを提供します。") | 添付ファイルの有効期限が切れるまでの時間を設定するオブジェクト。 * 最小値：添付ファイルが作成されてから 7200 秒 (2 時間)。これは、expiresAt() メソッドを呼び出さない場合のデフォルト値です。 * 最大値：添付ファイルが作成されてから 172800 秒 (48 時間)。 {#XSB-expiresAt_O__ul_xsc_trx_3lb} |
[表 : 4. パラメーター]

{#XSB-expiresAt_O__table_kc4_25s_jlb} {#XSB-expiresAt_O__table_lc4_25s_jlb__entry__2}

| タイプ | 説明 |
|-|-|
| XMLStreamingBuilder | XML ペイロードを開始するために使用するビルダーオブジェクト。 |
[表 : 5. 返される内容]

{#XSB-expiresAt_O__table_lc4_25s_jlb}  
次の例では、XML ドキュメントを作成し、定義された有効期限と一緒にストリーミング添付ファイル \[streaming_attachment\] テーブルに格納する方法を示します。


    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.

      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

## XMLStreamingBuilder - withAttachment() {#ariaid-title5}

添付ファイルとして XML ドキュメントを作成し、ストリーミング添付ファイル \[streaming_attachment\] テーブルに格納します。このメソッドを呼び出さない場合、API は XML ドキュメントを文字列として作成します。
{#XSB-withAttachment__table_oqn_zps_jlb__entry__3}

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

{#XSB-withAttachment__table_oqn_zps_jlb} {#XSB-withAttachment__table_pqn_zps_jlb__entry__2}

| タイプ | 説明 |
|-|-|
| XMLStreamingBuilder | XML ペイロードを開始するために使用するビルダーオブジェクト。 |
[表 : 7. 返される内容]

{#XSB-withAttachment__table_pqn_zps_jlb}  
次の例では、XML ドキュメントを作成し、定義された有効期限と一緒にストリーミング添付ファイル \[streaming_attachment\] テーブルに格納する方法を示します。  


    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.XMLStreamingBuilder()
        .withAttachment() // Creates the XML document in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the XMLStreamingAPI object.

      builder.startDocument("Employee") // Begins generating the XML document.
        .writeTextElement("firstName","John") // Writes a "firstName" element and value.
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address") // Adds an "address" parent element.
          .writeTextElement("streetAddress", "21 2nd Street") // Writes a child element and value.
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement() // Adds a closing tag for the "address" element.
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument() // Stops generating the XML document.
          
      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } catch (err) {
      gs.log(err);
    } finally {
      builder.close();
    }

この例は、XML ペイロードを構築して文字列として保存する方法を示しています。  

    (function execute(inputs, outputs) {

      var builder = new sn_ih.XMLStreamingBuilder().build();
      
      builder.startDocument("Employee")
        .enablePrettyPrint()
        .writeTextElement("firstName","John")
        .writeTextElement("lastName","Smith")
        .writeTextElement("age","25")
        .startElement("address")
          .writeTextElement("streetAddress", "21 2nd Street")
          .writeTextElement("city", "Santa Clara")
          .writeTextElement("state", "CA")
          .writeTextElement("postalCode", "11111")
        .endElement()
        .startElement("phoneNumber")
          .writeTextElement("type","home")
          .writeTextElement("number","212 555-1234")
          .writeTextElement("type","fax")
          .writeTextElement("number","646 555-4567")
        .endElement()
      .endDocument()

      outputs.payload = builder.getXMLString();
      
    })(inputs, outputs);

出力：  

    <?xml version="1.0" encoding="UTF-8"?>
    <firstName>John</firstName>
    <lastName>Smith</lastName>
    <age>25</age>
    <address>
      <streetAddress>21 2nd Street</streetAddress>
      <city>Santa Clara</city>
      <state>CA</state>
      <postalCode>11111</postalCode>
    </address>
    <phoneNumber>
      <type>home</type>
      <number>212 555-1234</number>
      <type>fax</type>
      <number>646 555-4567</number>
    </phoneNumber>


