XML DAT 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

XML DAT の XML/HTML 解析機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 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 で構造解析(要素・属性・子ノードの抽出)

出力: テーブル形式(行=要素、列=属性または子要素)

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 で解析し、属性や子要素をテーブルに展開して画面表示する基本フロー。

  1. Web Client DAT で対象 URL のレスポンスを取得
  2. XML DAT の Parse SGML/HTML をオンにして HTML として解析
  3. Children LabelsName Attributes で必要な要素・属性を絞り込み
  4. 出力テーブルを 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 で式を解決してパラメータに反映する用途。

  1. Web Client DAT で XML API を呼び出し
  2. XML DAT で Parse SGML/HTML をオフ(XML モード)に設定
  3. Children Labels で必要なノードのみ抽出
  4. Evaluate DAT でセル値を式評価して各種パラメータに連携

Example 3: XMLファイルの読込 📁

File In DAT → XML DAT → CHOP/SOP 制御値へ

ローカル XML ファイルを File In DAT で読み込み、XML DAT で構造解析後、制御値として活用する設定ファイル取り込みのパターン。

  1. File In DAT でローカル .xml ファイルを参照
  2. XML DAT に接続して属性・子要素を展開
  3. DAT to CHOP で数値列を CHOP に変換して各 OP に Export

関連オペレータ 🔗

類似機能OP 🔍

  • JSON DAT — JSON 形式のデータを同様に解析・テーブル化
  • Table DAT — 解析済みデータをテーブルとして保持・編集

組み合わせ推奨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 🎯


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 DATWeb Client DAT でデータ取得が成功しているか確認

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました