LabVIEWでXMLファイルを構文解析する
- 更新日2025-08-27
- 9分で読める
XML (xtensible Markup Language) は、情報の保存と交換に使用できるSGML (Standard Generalized Markup Language) のプラットフォームに依存しないサブセットです。XMLドキュメントで作業する場合、パーサーを使用して、XML形式を直接変換せずにデータを回収および処理することができます。たとえば、DOM (Document Object Model) コア仕様は、XMLドキュメントの作成、読み取り、操作用のプログラミングインタフェースを定義します。DOMコア仕様は、XMLパーサーがサポートする必要があるプロパティとメソッドを定義します。LabVIEWでのXMLパーサは、DOM (ドキュメントオブジェクトモデル) を使用するXerces 2.7パーサーです。
XMLパーサーと「XMLパーサー」VIとノードを使用して、XMLドキュメントの読み取り、書き込み、または操作を行います。
XML Parser VIでは、以下のブロックダイアグラムに示すように、LabVIEWでクロスプラットフォームのXMLパーサーを使用することができます。
XMLパーサーVIを使用するサンプルについては、labview\examples\File IO\XML\Parse XMLディレクトリを参照してください。
関連サンプルを検索
新規 (New) VIはXMLパーサーセッションを開いて、XMLドキュメントリファレンスを返します。XMLドキュメントを作成して、既存のドキュメントをXMLパーサーにロードするか、ドキュメントの設定を構成することができます。
既存のファイルを操作するには、ファイルをロードメソッドを使用して、XMLドキュメントをメモリにロードします。XMLパーサーがドキュメントを構文解析することを阻止するドキュメント内でXMLパーサーがエラーに遭遇した場合を除いて、LabVIEWはXMLドキュメントにアクセスすることが可能です。構文解析エラー出力は、これらのXMLに関連するエラーを表示します。
XMLを取得 (Pretty Print) メソッドを使用して、XMLドキュメントの内容をPretty Print形式の文字列で出力します。Pretty Print形式の出力は、空白文字とエンドオブライン (EOL) 文字をXMLデータに追加することでXMLデータの読み取りを簡単にします。XMLデータをPretty Print形式で出力する必要がない場合は、XMLを取得メソッドを使用します。前回のブロックダイアグラムでは、XML出力にXMLドキュメントの内容が表示されています。
「XMLを閉じる」VIはXMLドキュメントリファレンスを閉じて、VIが遭遇するエラーのすべてを返します。
XMLドキュメントを検証する
XMLパーサーを構成して、特定のXMLドキュメントが有効であるかどうかを決定することができます。ドキュメントは、外部語彙に適合する場合は有効です。LabVIEWパーサーでは、外部語彙はDTD (Document Type Definition) またはスキーマの場合があります。
一部のパーサーはXMLのみを構文解析し、ファイルをロードする前にXMLを検証しません。LabVIEWでのパーサーは、検証パーサーです。検証パーサーは、DTDまたはスキーマに対してXMLを検証して、検出した無効な項目をレポートします。特定のドキュメントが予想された形式とタイプであることを確認してください。検証パーサーを使用することで、各タイプのドキュメントに対してカスタム検証コードを作成する必要がなくなります。
XMLパーサーは、ファイルをロードメソッドの構文解析出力で検証エラーをレポートします。
| メモ XMLパーサーは、LabVIEWがドキュメントまたは文字列をロードする際ドキュメントまたはXML文字列を検証します。ドキュメントまたは文字列に変更を加え、変更のあるドキュメントまたは文字列を検証したい場合、ファイルをロードまたは文字列をロードメソッドを使用して、ドキュメントまたは文字列を再度ロードします。パーサーは、次に内容を再度検証します。 |
ファイルをロードメソッドを使用するサンプルについては、labview\examples\File IO\XML\Parse XMLディレクトリのLoad XML with Parser API VIを参照してください。
XMLパーサーを構成する
すべての可能な機能を有効にしたい場合、XMLパーサーのすべてのインスタンスを構成する必要があります。Documentクラスのプロパティを設定することで、パーサーを構成することができます。
ブロックダイアグラムにプロパティノード (XML)を配置して、利用可能なプロパティを調査します。プロパティノード (XML)には、以下のプロパティとメソッドが含まれます。
- ネームスペースを処理―XMLパーサーのネームスペース処理を有効または無効にできます。デフォルトは、XMLパーサーがそのネームスペースの制約と規則を強制することを意味するTRUEです。
- スキーマを処理―XMLパーサーの処理を有効または無効にできます。デフォルトは、XMLがスキーマのどれも処理しないことを意味するFALSEです。プロパティをTRUEに設定する場合、ネームスペース処理も有効にする必要があります。
- 外部DTDをロード―外部DTDのロードを有効または無効にできます。デフォルトは、XMLパーサーが外部DTDをロードすることを可能にすることを意味するTRUEです。ロード時に検証プロパティを常にまたは自動に設定すると、パーサーはこのプロパティを無視して、必ずDTDをロードします。
- 空白文字を保持―検証パーサーに省略可能な空白がテキストノードとして含まれているかどうかを指定することができます。デフォルトは、省略可能な空白をテキストノードとしてDOMに追加するTRUEです。プロパティをFALSEに設定すると、XMLパーサーは省略可能なすべての空白を廃棄し、DOMツリーにテキストノードを追加しません。

メモ XMLパーサーは、検証を実行しているときのみ、空白を無視します。それ以外の場合、パーサーには子ノードとして空白が含まれます。たとえば、タグの最初の子は次の要素ではなく空白である可能性があります。 - スキーマ完全検証―完全なスキーマ制約検証を設定することができます。プロパティは、ロード時に検証プロパティを常にまたは自動に設定すると有効になります。デフォルトは、部分的な制約チェックを実行するFALSEです。完全なスキーマ制約検証は、時間がかかり、多くのメモリを消費します。
- ロード時に検証―XMLパーサーが使用する検証スキームを設定できます。以下の列挙体の値の1つを選択することができます。
- 自動―(デフォルト) パーサーが内部または外部DTDサブセットを検出する場合、検証をオンにします。
- なし―検証をオフにします。

メモ このプロパティを「なし」に設定して、外部DTDをロードプロパティをTRUEに設定する場合、LabVIEWはドキュメントを構文解析しますが、検証エラーは返します。 - 常に―検証をオンにします。
XMLパーサーVIを使用するサンプルについては、labview\examples\File IO\XML\Parse XMLディレクトリを参照してください。
関連サンプルを検索
XMLドキュメントをクエリする
XMLパス言語 (XPath) は、要素や属性、テキストなどのXMLノードを検出する言語です。「一致する最初のノードを取得」VIを使用して、指定したXPath表現に一致する最初のノードを検出します。「一致するノードをすべて取得」VIを使用して、指定したXPath表現に一致するすべてのノードを検出します。これらのVIは、ノードの検出に指定したコンテキストノードを使用します。コンテキストノードは、LabVIEWがXPathクエリを実行するXMLドキュメントでの場所を示します。そのため、XMLドキュメントをクエリする相対または絶対XPath表現を指定できます。
LabVIEWは、World Wide Web Consortium (W3C)で定義されているXPathバージョン1.0をサポートしています。
「一致するノードをすべて取得」VIを使用するサンプルについては、labview\examples\File IO\XML\Parse XMLディレクトリにあるParse XML String for Multiple Nodes VIを参照してください。