XML パーサー
XML(Extensible Markup Language)は構造化データをエンコードするためのマークアップ言語です。JSONが多くのWeb APIでXMLに取って代わりましたが、XMLはエンタープライズシステム、SOAP Webサービス、設定ファイルにおいて依然として不可欠です。このツールはXMLを解析し、適切なインデントで整形出力します。
仕様
よくあるユースケース
- SOAP APIのリクエストとレスポンスをフォーマット
- Maven pom.xmlファイルの読み取りと検証
- RSSおよびAtomフィードコンテンツの解析
- AndroidレイアウトXMLファイルのデバッグ
- SVGグラフィックファイルの処理
- .NET設定ファイルの検査(web.config、app.config)
機能
- 適切なインデントによる整形出力
- 名前空間とプレフィックスの保持
- CDATAセクションと処理命令の処理
- 要素と並んで属性を表示
- プログラムでの処理を容易にするためJSONに変換
- 整形式XML構造の検証
例
Maven POM
試してみる →依存関係を定義するMavenプロジェクトオブジェクトモデル。
<?xml version="1.0" encoding="UTF-8"?>
<project>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
</dependencies>
</project>ヒント
- XMLは大文字と小文字を区別します。<User>と<user>は異なる要素です。
- すべての要素は適切に閉じる必要があります。自己閉じタグには<br/>を使用してください。
- 属性値は引用符で囲む必要があります(シングルまたはダブル)。
- < または & 文字を含むコンテンツにはCDATAセクションを使用してください。
解説 XML パーサー
XML(Extensible Markup Language)は、人間が読めてかつ機械が解析可能な形式で構造化データをエンコードするためのW3C標準です。固定のタグセットを持つHTMLとは異なり、XMLでは独自の要素と属性を定義でき、ドメイン固有のマークアップ言語を作成するためのメタ言語となっています。1.0仕様は1998年に公開され、現在も広く使用されています。
XMLの特徴的な点は、その厳格な構文です。すべての開始タグには終了タグが必要です(または自己閉じである必要があります)。属性は引用符で囲む必要があります。要素は適切にネストされている必要があります。これらのルールに従うドキュメントは「整形式(well-formed)」です。さらにスキーマ(DTD、XML Schema、またはRELAX NG)に準拠するドキュメントは「妥当(valid)」です。この厳格さにより、異なる技術で構築されたシステム間のデータ交換においてXMLは信頼性があります。
名前空間はXMLの要素名の衝突を回避するメカニズムです。名前空間はプレフィックスに関連付けられたURIです(xmlns:soap="...")。これにより、<soap:Envelope>と<html:body>が同じドキュメント内で曖昧さなく共存できます。名前空間はSOAP Webサービス、SAMLアサーション、SVGグラフィック、および複数のボキャブラリを組み合わせるドキュメントにおいて不可欠です。
JSONがその軽量な構文によりほとんどのWeb APIでXMLに取って代わりましたが、XMLはエンタープライズ統合(SOAP、EDI)、ドキュメント形式(DOCX、XLSX、ODF)、設定(Maven pom.xml、.NET web.config、Androidレイアウト)、シンジケーション(RSS、Atom)、ベクターグラフィック(SVG)において依然として主流です。XMLの理解は、レガシーシステム、エンタープライズソフトウェア、ドキュメント処理パイプラインを扱う上で不可欠です。
整形式XMLは基本的な構文ルールに従います:適切なネスト、閉じタグ、引用符付きの属性、単一のルート要素。任意のXMLパーサーが整形式XMLを読み取れます。妥当なXMLはさらに進んで、許可される要素と属性、その順序、データ型を定義するスキーマ(DTD、XML Schema、またはRELAX NG)に準拠します。検証はオプションですが、両者がドキュメント構造に合意する必要があるデータ交換においては重要です。
名前空間は要素をURIに関連付けることで要素名の衝突を防ぎます。名前空間はxmlns:prefix="URI"で宣言され、要素のプレフィックスとして使用されます(<prefix:element>)。デフォルト名前空間(プレフィックスなしのxmlns="URI")はその要素と修飾されていない子孫に適用されます。URIは実際のリソースを指す必要はなく、一意の識別子としてのみ機能します。CDATAセクション(<![CDATA[ ... ]]>)は、<や&のような文字を含むコンテンツを<や&にエスケープせずに含める方法を提供します。これはXML要素内にJavaScript、SQLクエリ、HTMLフラグメントを埋め込む際に便利です。
XMLはJSONにはないいくつかの機能を提供します:ボキャブラリを組み合わせるための名前空間、正式な検証のためのスキーマ、要素コンテンツと並ぶメタデータのための属性、処理命令、混合コンテンツ(テキストと要素の混在)、宣言的な変換のためのXSLT。XMLはドキュメント指向のデータ、複雑なエンタープライズ統合、システム間の正式な契約が必要なシナリオにおいてより優れた選択です。JSONは、その軽量な構文と普遍的なツールサポートがXMLの構造的な豊かさよりも重要なWebアプリケーションでの単純なデータ交換に適しています。