【編集者注】この記事の著者である Yegor Bugayenko は Teamed.io の共同創設者であり、ソフトウェア品質とエンジニアリング管理手法の分野で深い研究を行っています。この記事では、プロジェクトを構築するときに適切なデータ形式タイプを選択できるように、著者が JSON と比較しながら XML の 4 つの主要な機能を詳しく説明します。
JSONとXMLを比べたらどちらが優れていてどちらが速いのか、多くの人が心の中で悩んでいます。次の新しいプロジェクトにはどれを選ぶべきですか?ばかなことしないで!まったく比較のしようがありません。バイクと AMG S65 のように、どちらが優れているか言えますか?どちらも交通手段ですが、場合によっては自転車の方が便利です。したがって、JSON と XML についても同様であり、どちらにも独自の利点があり、比較する必要はまったくありません。
以下は単純な JSON データ (140 文字) です:
{ "id": 123, "title": "Object Thinking", "author": "David West", "published": { "by": "Microsoft Press", "year": 2004 } }
同じデータは次のように XML で表現されます (167 文字):
<?xml version="1.0"?> <book id="123"> <title>Object Thinking</title> <author>David West</author> <published> <by>Microsoft Press</by> <year>2004</year> </published> </book>
違いが分かりやすく、前者の方が簡潔で簡単ですを理解することができ、JavaScript で完全に解析できます。では、単純に XML を諦めて JSON を選択することはできるのでしょうか? 15 年前の強力な言語を必要とする人がいるでしょうか?
しかし、逆に、私は XML が大好きなので、以下に詳しく説明します。
ただし、誤解しないでください、この記事は JSON に反対しているわけではありません。 JSON は確かに優れたデータ形式ですが、ポイント A からポイント B にデータを取得するためにアドホックによく使用されるデータ形式にすぎません。 XML よりも短くて読みやすいですが、それだけです。
XML は、単なるデータ形式ではなく、非常に強力な言語です。 JSON や YAML などの他の単純なデータ形式と比較して、XML には少なくとも次の 4 つの重要な特徴があります。
属性と名前空間上記の id 属性と同様に、XML データにメタデータを追加できます。データは本の著者名などの要素で保持され、メタデータ(データのデータ)は属性として保持されるため、情報の整理と構造化が非常に容易になります。最も重要なことは、要素と属性の両方を名前空間に属するものとしてマークできることです。これは、複数のアプリケーションが同じ XML ドキュメントを使用する場合に特に有利です。
この状況を想像してください。あるマシンで XML ドキュメントを作成し、他のコンピュータでそれを数回変更し、それを他のコンピュータに転送して使用する場合、文書構造は中間操作によって破壊されません。たとえば、ある人は発行日を保存するために 4620f01c9fab72e23a9b679732106cc4 を使用するかもしれませんが、別の人は ISO-8601 形式の 1d78a9a384cca7aba89b0d5f2a964e41 を使用するかもしれません。このような構造上の混乱を避けるために、説明ドキュメント XML スキーマを作成し、それをメインドキュメントと一緒に保存できます。メインドキュメントに対する各操作の前に、スキーマファイルを通じてその正確性をチェックする必要があります。これは、運用プロセス中の一種の統合テストです。 RelaxNG にも同様のメカニズムがありますが、XML スキーマが複雑すぎると思われる場合は、RelaxNG を使用してみてください。
実際、XML ドキュメントは Java/Ruby コードなしで変更できます。簡単に言えば、XSL 変換ドキュメントを作成し、それを元の XML に適用して、新しい XML を取得するだけです。 XSL 言語 (純粋関数型言語) は階層データ操作用に設計されており、Java やその他のオブジェクト指向/手続き型言語よりもこのタスクに適しています。 XSL を使用すると、XML をプレーン テキストや HTML などの任意の形式に変換できます。 XSL は複雑すぎると不満を言う人が多いですが、実際には XSL の中心的な機能は非常に単純なので、試してみるとよいでしょう。 上記は XML のすべての機能ではありませんが、これら 4 つの機能は確かに非常に便利です。ドキュメントを「自己完結型」にするだけでなく、自己検証 (XML スキーマ) を実行し、それを変更する方法 (XSL) を知り、最後にドキュメントのコンテンツ (Xpath) を簡単に取得することもできます。
同時に、Xforms、SVG、MathML、RDF、OWL、WSDLなどを含む、XMLに基づいて開発された多くの言語、標準、アプリケーションが市場に出ています。しかし、ターゲットが絞りすぎているため、一般の主流プロジェクトでは使用されていません。
JSON を設計する目的は、上記の特性を満たすことではありません。JSON フィールドは現在、クエリ用の JSONPath、いくつかの変換ツール、検証用の json スキーマを含めて懸命に努力していますが、これは強力な XML に比べれば単なる模倣にすぎません。 、作者は長期的な発展はないと考えており、遅かれ早かれ消滅するでしょう。
要約すると、JSON は追加機能があまりないシンプルなデータ形式です。それ以外の場合は、XML を使用することを強くお勧めします。
OneAPM は、エンドツーエンドの Java アプリケーション パフォーマンス ソリューションを提供し、すべての一般的な Java フレームワークとアプリケーション サーバーをサポートし、システムのボトルネックを迅速に発見し、異常の根本原因を特定するのに役立ちます。数分で導入して即座に体験できるため、Java の監視がこれまでになく簡単になりました。さらに技術的な記事を読むには、OneAPM 公式技術ブログにアクセスしてください。
以上がJSON と XML の違いの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。