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

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

開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

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

DataWeave スクリプト:

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

入力 XML ペイロード:

```xml
<language>
    <name>DataWeave</name>
</language>
```

出力 XML:

```xml
<?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 ペイロード:

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

出力 XML:

```xml
<?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 ペイロード:

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

出力 XML:

```xml
<?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 ペイロード:

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

出力 XML:

```xml
<?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 ペイロード:

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

出力 XML:

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