
概要 📖 – XMLを表形式に解析
XML DATは、XML / SGML / HTML データを解析しテーブル形式で属性や子要素を出力する DATです。Web スクレイピング結果や外部 API のレスポンス、HTML フォームデータの構造化解析に利用します。
主な用途 🎯
- XMLデータの解析とテーブル化(要素・属性・子ノードを行と列に展開)
- SGML/HTMLドキュメントの解析(Webスクレイピング結果の構造化)
- フォームデータの解析(HTMLフォーム送信値の取り出し)
- 外部APIレスポンスの取り込み(XML形式のWeb APIから値を抽出)
- ネスト構造ドキュメントの平坦化(属性名・値・子要素ラベルでフィルタ)
データフロー 🔄
入力: XML / SGML / HTML 文字列(File In DAT・Web Client DAT 等から)
↓
XML DAT で構造解析(要素・属性・子ノードの抽出)
↓
出力: テーブル形式(行=要素、列=属性または子要素)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Format Page 📋
Format .format 🧩
入力データの解析方式とマージ動作を決定するパラメータ群
Parse SGML/HTML .sgml 🔀
– Parse SGML/HTML (SGML/HTML 解析) — オンにすると入力を SGML/HTML として解析。HTML フォームデータの取り込みもこの形式に含まれます。
– オフ(既定)の場合は XML 形式として解析。
Merge .merge 🔗
– Merge (マージ動作) — 2 つ目の入力を 1 つ目に統合する方法を指定するメニュー。
– 統合先の要素は次項 Label で指定します。2 つ目の入力は XML 形式である必要があり、SGML/HTML は不可。
Label .mlabel 🏷️
– Label (マージ先ラベル) — Merge 動作時に、どの要素ラベルにマージするかを指定する文字列。
– パターンマッチングが使えるため複数要素を同時に対象化できます。
Output Page 📤
出力フィルタ .outputfilters 🔎
テーブル出力の対象を絞り込むパラメータ群
Name Attributes .oaname 🏷️
– Name Attributes (属性名フィルタ) — 出力する属性を属性名のパターンマッチングで絞り込みます。
– 例: id name class と指定すると 3 種類の属性のみを抽出。
Value Attributes .oavalue 🔣
– Value Attributes (属性値フィルタ) — 出力する属性を属性値のパターンマッチングで絞り込みます。
– 特定の値を持つ属性だけを抽出したいときに使用。
Children Labels .oclabel 🌿
– Children Labels (子要素ラベルフィルタ) — 出力する子要素をラベルのパターンマッチングで絞り込みます。
– 例: item と指定すると item ラベルの子要素のみを対象化。
Show .show 👁️
– Show (表示方法) — 抽出された要素・属性・子要素をテーブルにどう並べるかを指定するメニュー。
– 要素を行に並べるか、属性を行に並べるか等、用途に応じて選択します。
Label Prefix .lprefix 🔠
– Label Prefix (ラベル接頭辞) — テーブル出力時に要素ラベルを接頭辞として付けるかどうかのトグル。
– 同じ属性名が複数要素に存在する場合の名前衝突を避けるのに有効。
実践アイデア 💡
Example 1: Webデータを表に変換 🌐
Web Client DAT → XML DAT (Parse SGML/HTML=ON) → Table DAT → Display
Web Client DAT で取得した HTML レスポンスを XML DAT で解析し、属性や子要素をテーブルに展開して画面表示する基本フロー。
- Web Client DAT で対象 URL のレスポンスを取得
- XML DAT の
Parse SGML/HTMLをオンにして HTML として解析 Children LabelsやName Attributesで必要な要素・属性を絞り込み- 出力テーブルを Table DAT や Text COMP で表示
Example 2: API応答のXML解析 🔌
Web Client DAT (XML API) → XML DAT → Evaluate DAT → Parameter Bind
XML 形式の Web API からレスポンスを取得し、XML DAT で特定の要素値を抽出。Evaluate DAT で式を解決してパラメータに反映する用途。
- Web Client DAT で XML API を呼び出し
- XML DAT で
Parse SGML/HTMLをオフ(XML モード)に設定 Children Labelsで必要なノードのみ抽出- Evaluate DAT でセル値を式評価して各種パラメータに連携
Example 3: XMLファイルの読込 📁
File In DAT → XML DAT → CHOP/SOP 制御値へ
ローカル XML ファイルを File In DAT で読み込み、XML DAT で構造解析後、制御値として活用する設定ファイル取り込みのパターン。
- File In DAT でローカル .xml ファイルを参照
- XML DAT に接続して属性・子要素を展開
- DAT to CHOP で数値列を CHOP に変換して各 OP に Export
関連オペレータ 🔗
類似機能OP 🔍
組み合わせ推奨OP 🔄
- Web Client DAT — Web から XML/HTML を取得して XML DAT に流す
- File In DAT — ローカル XML ファイルの読込元
- Substitute DAT — 前処理として XML/HTML 内の文字列置換
- Convert DAT — 解析後のテーブル形式を別形式に変換
- Evaluate DAT — 抽出した値を式評価してパラメータに反映
- Merge DAT — 複数 XML 解析結果のテーブルを結合
前処理・後処理DAT 🎯
- 前処理 DAT: Web Client DAT、File In DAT、Substitute DAT
- 後処理 DAT: Select DAT、Convert DAT、Merge DAT、Evaluate DAT
Info DAT情報 📊
XML DAT は Info DAT による詳細情報取得に対応しています。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
DAT 共通情報 📑
num_rows: 出力テーブルの行数(解析された要素数)num_cols: 出力テーブルの列数(抽出された属性・子要素の種類数)total_chars: テーブル全体の総文字数(メモリ目安)cook_time: XML DAT のクック時間(ミリ秒)— 大きな XML 解析時のパフォーマンス計測に利用last_cooked_frame: 最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: XML が正しく解析されない
✅ Solution:
- 入力データが整形済みの XML / SGML / HTML か確認(不正な閉じタグ・特殊文字エスケープ漏れ)
- HTML フォームデータや HTML ページを扱う場合は
Parse SGML/HTMLをオンに設定 - 前段で Substitute DAT を入れて、想定外の制御文字や BOM を除去
❌ Problem: 属性や子要素が出力テーブルに現れない
✅ Solution:
Name Attributes/Value Attributes/Children Labelsのフィルタがすべて空かを確認(空欄=フィルタなしの仕様)Showパラメータの設定が用途と一致しているかを確認(要素行モード/属性行モード等)- ネストが深い場合は
Children Labelsでルート直下のラベル名を明示指定
❌ Problem: Merge が想定通りに動作しない
✅ Solution:
- 2 つ目の入力が XML 形式であること(SGML/HTML は不可)を確認
Labelパラメータでマージ先要素ラベルが正しく指定されているか確認- 片方の入力が空の場合は前段の File In DAT や Web Client DAT でデータ取得が成功しているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

