> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# xmlDOMSearch

> xpath を使用してインプットXML ドキュメント内の要素をループし、繰り返し構造を列挙します。

インプットXML ドキュメント内の要素をループします。

## 必要なパラメータ

* **xpath**：ループ対象となる指定セグメントの1始まりのインデックスxpath。例：`<arc:set attr="myinputitem.xpath" value="/Items/foo/" />`。

## オプションのパラメータ

* **uri**：XML ファイルのURI。例：`http://mydomain.com/resources/somedata.xml`、`/tmp/myfile.xml`、または `[FilePath]`。
* **text**：XML データへの読み取り可能なハンドル参照。このハンドルは[xmlOpen](./op-xml-open) オペレーションによって作成され、インプットXML がファイルやrawテキストではない場合、またはドキュメントのファイルデータにアクセスする複数のアクションを実行する必要がある場合に役立ちます。
* **handle**：XML データへの読み取り可能なハンドル参照。このハンドルはxmlOpen オペレーションによって作成され、対象のXML がインプットファイルではない場合にのみ必要です。詳細と例については[xmlOpen](./op-xml-open) を参照してください。

## アウトプット属性

* **xpath**：ループ対象となる指定要素の完全な1始まりのインデックスxpath を返します。例：`[myoutitem.xpath]` は`foo` XML 要素のxpath である`/Items/foo[1]` に解決されます。
* **xname**：ループ対象となる要素の名前を返します。例：`[myoutitem.xname]` は`foo` XML 要素の名前である`foo` に解決されます。

## 例

インプットファイルとして渡される次のXML について考えてみます：

```xml theme={null}
<Items>
    <hello>world</hello>
    <colors>
        <color>yellow</color>
        <example>banana</example>
    </colors>
    <colors>
        <color>red</color>
        <example>apple</example>
    </colors>
    <colors>
        <color>orange</color>
        <example>orange</example>
    </colors>
</Items>
```

次に示すように、xmlDOMSearch オペレーションを使用して、各`<colors>` 親要素内のすべての子要素を列挙できます：

```xml theme={null}
<!-- Setting the input uri and xpath -->
<arc:set attr="xml.uri" value="[FilePath]" />
<arc:set attr="xml.xpath" value="/Items/colors" />

<!-- Calling the operation, passing in the xml item --> 
<arc:call op="xmlDOMSearch" in="xml" >
  <!-- Inside the call you can reference elements at paths relative to the input "xpath" -->
  <!-- In this example each color and example is written to the output data -->
  <arc:set attr="_log.info" value="Color = [xpath(color)]" />
  <arc:set attr="_log.info" value="Example = [xpath(example)]" />
</arc:call>

<!-- Setting the output file and pushing the file out -->
<arc:set attr="output.filepath" value="[FilePath]" />
<arc:push item="output" />
```

アプリケーションログのアウトプットは次のようになります：

<img src="https://mintcdn.com/cdata-arc/AKthyJ-LnqphL8js/public/images/jsonDOMSearch.png?fit=max&auto=format&n=AKthyJ-LnqphL8js&q=85&s=37125689760916f00c58cfc10865eb88" width="600" data-path="public/images/jsonDOMSearch.png" />
