---
schema_version: "1"
id: 53775607cf8a9ab63f0b667ce0e587e86d28ca73d278b3151e118850fc653009
title: XML 要素の選択
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.3/dataweave-cookbook-select-xml-elements.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-select-xml-elements
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 14176d614b369c7920f447784e254aca9902a92cfa4483fea290e56bcd657223
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
# XML 要素の選択

DataWeave には、入力データの構造をトラバースし、一致する値を返すための多数の​[セレクター](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-selectors)​があります。次の例は、単一値の DataWeave セレクター (​`.`​) を使用して、XML 要素からデータを抽出します。

開始する前に、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 バージョンセレクターを使用できます。

XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (​`language`​) のセレクターは子要素を抽出できます。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/xml
---
payload.language
```

入力 XML ペイロード:

```json
<language>
    <name>DataWeave</name>
</language>
```

出力 XML:

```json
<?xml version='1.0' encoding='UTF-8'?>
<name>DataWeave</name>
```

1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (​`myroot`​) を指定し、ルート (​`root`​) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー ​`Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…​`​ が生成されます。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/xml
---
{ myroot: payload.root }
```

入力 XML ペイロード:

```json
<root>
    <element>
        <subelement1>SE1</subelement1>
    </element>
    <element>E2</element>
</root>
```

出力 XML:

```json
<?xml version='1.0' encoding='UTF-8'?>
<myroot>
  <element>
    <subelement1>SE1</subelement1>
  </element>
  <element>E2</element>
</myroot>
```

次の例では、子要素の名前 (​`name`​) と単一値セレクターを使用して、その値を選択します。​`payload.language.name`​ によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/xml
---
{ newname : payload.language.name }
```

入力 XML ペイロード:

```json
<language>
    <name>DataWeave</name>
    <version>2.0</version>
</language>
```

出力 XML:

```json
<?xml version='1.0' encoding='UTF-8'?>
<newname>DataWeave</newname>
```

次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス ​`language[1]`​ を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/xml
---
{ version : payload.language[1] }
```

入力 XML ペイロード:

```json
<language>
    <name>DataWeave</name>
    <version>2.0</version>
</language>
```

出力 XML:

```json
<?xml version='1.0' encoding='UTF-8'?>
<version>2.0</version>
```

入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/xml
---
{ mysubelement : payload.root[0].subelement1 }
```

入力 XML ペイロード:

```json
<root>
    <element>
        <subelement1>SE1</subelement1>
    </element>
    <element>E2</element>
</root>
```

出力 XML:

```json
<?xml version='1.0' encoding='UTF-8'?>
<mysubelement>SE1</mysubelement>
```