---
schema_version: "1"
id: 955e579b4b60b094d046eeaf2f03cb76643ffb44f7a5f962efe730ba95bfe9fe
title: リーダーとライターの設定プロパティの設定
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.3/dataweave-cookbook-set-reader-writer-props.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-set-reader-writer-props
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 78b970ff4fe5e322f33d441f7ed4ca9bfd8f76da36679c8c8db65828f572f0bf
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
# リーダーとライターの設定プロパティの設定

DataWeave では、JSON (​`application/json`​)、XML (​`application/xml`​)、(​`application/csv`​) などのデータ形式の設定プロパティが提供されます。このプロパティでこれらの形式の DataWeave リーダーおよびライターの動作を変更します。たとえば、CSV リーダーのデフォルトの区切り文字はカンマ (​`,`​) です。この形式の ​`separator`​ プロパティを使用して、CSV コンテンツの別の区切り文字を指定できます。

開始する前に、DataWeave バージョン 2 (​`%dw 2.0`​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​[`%dw 1.0`](#3.9@mule-runtime::dataweave-examples.adoc)​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

## [](#出力ディレクティブでのライタープロパティの使用)出力ディレクティブでのライタープロパティの使用

次の例は、ライタープロパティを DataWeave ​`output`​ ディレクティブに追加する方法を示しています。このスクリプトでは、​`indent = false`​ を使用して JSON 出力を 1 行に圧縮します。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/json indent = false
---
{
	hello : "world",
	bello : "world",
	mello : "world"
}
```

出力 JSON:

```json
{"hello": "world","bello": "world","mello": "world"}
```

次の例でも、ライター設定プロパティを ​`output`​ ディレクティブに追加しています。

- `schemaUrl`​ を使用する ​[Avro の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-avro#examples)​
- `header=true`​ を使用する ​[Excel (XLSX) の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-excel#example2)
- `schemaPath`​ を設定する​[フラットファイル](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-flatfile#examples)​の例
- `inlineCloseOn="empty"`​ を使用して空の XML 要素を閉じる ​[XML](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-remove-certain-xml-attributes)​ の例

## [](#dataweave-関数でのリーダーとライターのプロパティの使用)DataWeave 関数でのリーダーとライターのプロパティの使用

DataWeave の ​`read`​、​`readUrl`​、および ​`write`​ 関数は、中括弧内の 1 つ以上のカンマ区切りプロパティ設定を受け入れます。

次のスクリプトのヘッダーの ​`myVar`​ の値は、空の子要素 (​`<ex1></ex1>`​) を含む XML サンプルを入力する ​`read`​ 関数です。この関数は、空の要素の値を ​`null`​ に変換する XML リーダープロパティ ​`{nullValueOn: "empty"}`​ を渡します。

スクリプトの本文の ​`write`​ 関数は ​`myVar`​ の値を入力として受け入れます。この関数では、JSON ライタープロパティを ​`{skipNullOn:"objects", writeAttributes:true}`​ に渡して、​`null`​ 値 (​`<ex1>null</ex1>`​) を含むオブジェクトをスキップし、属性と ​`<ex3 a='greeting'>hello</ex3>`​ の値を書き込みます。

DataWeave スクリプト:

```dataweave
%dw 2.0
var myVar = read("<greeting><ex1></ex1><ex2>hello</ex2><ex3 a='greeting'>hello</ex3></greeting>", "application/xml", {nullValueOn: "empty"})
output application/json with binary
---
write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true})
```

出力 JSON:

```json
{
  "ex2": "hello",
  "ex3": {
    "@a": "greeting",
    "__text": "hello"
  }
}
```

リーダープロパティを ​`readUrl`​ に渡す例を次に示します。

- [XML の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-xml#example1)
- [ndjson の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-ndjson#example2)

## [](#ex03)コネクタ操作を介したリーダープロパティの使用

入力データを読み取るコネクタ操作では、​_入力_​ MIME タイプを識別するために使用できる ​`outpuMimeType`​ 項目が提供されます。この項目は、DataWeave で入力を正確に読み取るのに役立つ 1 つ以上のリーダープロパティも受け入れます。

デフォルトでは、DataWeave リーダーではカンマ (​`,`​) が区切り文字として処理されます。ただし、CSV 入力がパイプ (​`|`​) で区切られており、コンテンツにカンマも含まれている場合は、パイプを区切り文字として認識するように CSV リーダープロパティを設定できます。

パイプ区切りの CSV 入力

```csv
id | name | role
1234 | Shokida,Mr. | dev
2345 | Achaval,Mr. | arch
3456 | Felisatti,Ms. | mngr
4567 | Chibana,Mr. | dev
```

次の例では、File Connector で Read 操作を使用してパイプ区切り (​`|`​) の CSV 入力を読み取り、Transform Message コンポーネントで DataWeave スクリプトを使用して入力の行をカンマ区切り形式で出力します。

Mule フロー:

```xml
<flow name="ex-use-csv-reader-props" >
	<scheduler doc:name="Scheduler" >
		<scheduling-strategy >
			<fixed-frequency frequency="90" timeUnit="SECONDS"/>
		</scheduling-strategy>
	</scheduler>
	<file:read doc:name="Read" config-ref="File_Config" path="staff.csv"
	           outputMimeType='application/csv; separator=|; header=true'/>
	<ee:transform doc:name="Transform Message" >
		<ee:message>
			<ee:set-payload><![CDATA[%dw 2.0
output application/csv header = false
---
payload[1]]]></ee:set-payload>
		</ee:message>
	</ee:transform>
	<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
```

例の Scheduler コンポーネント (​`<scheduler/>`​) では、フローをトリガーするたびに Mule イベントを生成します。

Read 操作 (​`<file:read/>`​) では、​`outputMimeType='application/csv; separator=|; header=true'`​ を使用して、入力 MIME タイプ (​`application/csv`​)、CSV 区切り文字 (​`|`​)、ヘッダー設定 (​`true`​) を識別します。

Transform Message コンポーネント (​`<ee:transform-message/>`​) のスクリプトでは、入力 CSV から 2 番目の行 (​`2345 , Achaval\,Mr. , arch`​) が返されます。DataWeave では CSV の各行が配列のインデックスとして処理されるため、このスクリプトでは ​`payload[1]`​ を使用してこの行を選択します。デフォルトの CSV 区切り文字はカンマのため、出力はカンマで区切られています。このスクリプトでは、​`output`​ ディレクティブ (​`output application/csv header = false`​) を使用して出力から CSV ヘッダーを除外します。

`payload`​ に設定された Logger コンポーネント (​`<logger/>`​) では、カンマ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `2345 , Achaval\,Mr. , arch`​。「Mr.」の前のカンマが区切り文字として処理されないように、CSV 出力ではこのカンマがバックスラッシュでエスケープされています (​`Achaval\,Mr.`​)。

`outputMimeType`​ 項目を介してリーダープロパティを渡す例を次に示します。

- `streaming=true; header=true`​ を使用する ​[CSV の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-csv#example2)
- `streaming=true`​ を使用する ​[JSON の例](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-json#example3)

## [](#ex04)設定値としての Mule 変数の使用

次の Mule フローでは、カンマ区切りの CSV データをパイプ区切り (​`|`​) の CSV データに変換します。スクリプトでリテラル値を設定する代わりに、この例では、フロー内のデータ処理コンポーネントを通過する Mule イベントの一部である ​[Mule 変数](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-variables)​からパイプ値を選択しています。

例の Scheduler コンポーネント (​`<scheduler/>`​) では、フローをトリガーするたびに Mule イベントを生成します。

Set Variable コンポーネント (​`<set-variable/>`​) では、値 ​`'|'`​ を含む ​`delimiter`​ という名前の Mule 変数を作成します。Studio では、値は単純な文字列 (​`value="'|'"`​) ではなく ​**fx**​ 式 (​`value="#['|']"`​) として作成されます。

Transform Message コンポーネント (​`<ee:transform-message/>`​) には、カンマ区切りの CSV 入力を読み取り、Mule 変数を使用してパイプ区切りの CSV 出力を書き込む DataWeave スクリプトが含まれます。

`payload`​ に設定された Logger コンポーネント (​`<logger/>`​) では、パイプ区切りの出力を INFO としてその ​`LoggerMessageProcessor`​ メッセージに書き込みます: `macaroni | rigatoni | ravioli | spaghetti`​。

Mule フロー:

```xml
<flow name="ex-use-mule-var-as-prop-config-val" >
  <scheduler doc:name="Scheduler" >
    <scheduling-strategy >
      <fixed-frequency frequency="45" timeUnit="SECONDS"/>
    </scheduling-strategy>
  </scheduler>
  <set-variable value="#['|']" doc:name="Set Variable" variableName="delimiter" />
  <ee:transform doc:name="Transform Message" >
    <ee:message>
      <ee:set-payload><![CDATA[%dw 2.0
var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})
output application/csv with binary
---
write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})]]></ee:set-payload>
    </ee:message>
  </ee:transform>
  <logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
```

例のカンマ区切り入力を提供するため、Transform Message コンポーネントのスクリプトでは、​[read](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-read)​ 関数を DataWeave 変数 (​`myVar`​) への値として使用します:

`var myVar = read("macaroni , rigatoni , ravioli , spaghetti", "application/csv" , {"header":false, separator:','})`​

パイプ区切りの出力を書き込むため、スクリプト本文の DataWeave ​[write](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core-functions-write)​ 関数では、カンマ区切りの入力をパイプ区切りの出力に変更します。Mule 変数 (​`delimiter`​) からパイプ値を選択するため、この関数ではライタープロパティ設定 ​`"separator":vars.delimiter`​ を引数として渡します:

`write(myVar, "application/csv", {"header":false, "separator":vars.delimiter})`​

スクリプトでは DataWeave ​`output`​ ディレクティブ \`output applicatio:page-aliases をスクリプトのヘッダーで使用しています。

Studio UI で Tranform Message コンポーネントの ​**\[Preview (プレビュー)\]**​ 画面からパイプ区切りのコンテンツを表示する場合は、そのサンプルデータを作成する必要があります。

1. Studio アプリケーションの ​**\[Message Flow (メッセージフロー)\]**​ 領域から \[Transform Message\] コンポーネントをダブルクリックします。
2. **\[Context (コンテキスト)\]**​ タブの ​**\[delimiter: _String_\]**​ を右クリックします。これは、コンポーネントの設定 UI の左下にあります。
3. **\[Edit Sample Data (サンプルデータの編集)\]**​ を選択して、​**\[vars-delimiter\]**​ タブを開きます。
4. **vars-delimiter**​ のすべてのコンテンツを ​`delimiter`​ 値の次のサンプルデータで置き換えます: `"|"`​。区切り文字は引用符で囲む必要があります。

サンプルデータについての追加の指標は、​[「変換出力のプレビュー」](https://docs.mulesoft.com/jp/mule-runtime/4.3/transform-preview-transformation-output-studio-task)​を参照してください。

## [](#関連情報)関連情報

- [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats)
- [コアコンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-components)
- [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook)