ホームページ  >  記事  >  バックエンド開発  >  XML と JSON の違いの詳細な紹介

XML と JSON の違いの詳細な紹介

黄舟
黄舟オリジナル
2017-05-07 13:49:252560ブラウズ

今日面接に行ったんですが、人事担当者にxmljsの違いについて聞かれたので、答えられなくて悲しくなったので、関連する情報を調べて書きました。戻ってきました:

1. 定義の概要
(1).XML は、電子ドキュメントをマークして構造化するために使用されるマークアップ言語 (XML) を定義します。これは、ユーザーがマークアップ言語が定義されている独自のソース言語をカスタマイズできるマークアップ言語です。 XML は、DTD (ドキュメント タイプ定義) ドキュメント タイプ定義を使用してデータを整理します。この形式は、プラットフォームおよび言語に依存せずに統一されており、長い間業界で標準として認識されてきました。 XML は標準一般化マークアップ言語 (SGML) のサブセットであり、Web トランスポートに適しています。 XML は、アプリケーションやベンダーに依存せずに構造化データを記述および交換するための統一された方法を提供します。
(2).JSON 定義 JSON (JavaScript Object Notation) は、可読性が高く、素早く記述しやすい軽量のデータ交換形式です。異なるプラットフォーム間でのデータ交換が可能です。 JSON は、互換性が高く完全に言語に依存しないテキスト形式を採用しており、C 言語の習慣 (C、C++、C#、Java、JavaScript、Perl、Python などを含む) と同様のシステム動作も備えています。これらの特性により、JSON は理想的なデータ交換言語になります。 JSON は、標準 ECMA-262 第 3 版 (1999 年 12 月) のサブセットである JavaScript プログラミング言語に基づいています。
2. XML と JSON の利点と欠点
(1). XML の利点と欠点

A. 標準に準拠した、リモートでの対話が容易。 、データ共有の比較が便利です。


2cc198a1d5eb0d3eb508d858c9f5cbdbXML の欠点
A.XML ファイルは巨大で、ファイル形式が複雑で、送信に帯域幅が消費されます。

B. サーバーとクライアントの両方が XML を解析するために大量のコードを費やす必要があるため、サーバーとクライアントのコードを変更することは非常に複雑であり、メンテナンスが困難です。

C. クライアント側で XML を解析する方法は一貫性がなく、多くのコードを繰り返し記述する必要があります。サーバー側とクライアント側で XML を解析するには、より多くのリソースと時間がかかります。

(2). JSON の利点と欠点

f35d6e602fd7d0f0edfa6f7d103c1b57。JSON の利点:

A. データ形式は比較的単純で、圧縮され、帯域幅をほとんど消費しません。 B. 解析が簡単で、エンドサイド JavaScript は

C を通じて JSON データを読み取ることができます。

Action

Script、C、C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、サーバー側の解析を容易にする Ruby およびその他のサーバー側言語。PHP の世界では、PHP のシリアル化後にプログラムを直接呼び出すことが推奨されています。 PHP サーバー上の
array
などを直接呼び出すことができます。JSON 形式を生成して、サーバー側のコードで直接使用できるため、コード開発の量が大幅に簡素化されます。サーバー側とクライアント側でタスクが変更されず、保守が容易です。
2cc198a1d5eb0d3eb508d858c9f5cbdb. JSON の欠点 A. JSON 形式は XML 形式ほど普及しておらず、汎用性もありません。ウェブサービス。
3. XML と JSON の利点と欠点の比較(1)。 JSON と XML のデータの可読性は基本的に同じです。一方には推奨構文があり、もう一方には標準化されたタグ形式が含まれています。 (2)。 XML は本来非常にスケーラブルであり、JSON には確かにそれが備わっています。XML で拡張できて JSON で拡張できないものは何もありません。
(3). コーディングの難しさ。 XML には Dom4j、JDom などの豊富なエンコード ツールがあり、JSON にも json.org が提供するツールがあります。ただし、ツールを使用しなくても、JSON コードを記述するよりも明らかに JSON エンコードのほうが簡単です。 、しかし XML をうまく書くのは難しいです。

(4)。解読の難しさ。 XML の解析では子ノードと親ノードを考慮する必要があるためめまいがしますが、JSON の解析の難易度はほぼ 0 です。この時点では、XML が失うものは何もありません。

(5)。 XML は業界で広く使用されており、JSON は始まったばかりですが、Ajax の特定の分野では、今後の発展は XML から JSON に取って代わられるはずです。それまでに、Ajax は Ajaj (Asyn
chr
onous Javascript および JSON) になるはずです。

(6). 分析方法。 JSON と XML にも豊富な解析メソッドがあります。

(7)。 JSON は XML に比べてデータサイズが小さく、通信速度が速いです。

(8). データの相互作用。 JSON と JavaScript 間の対話はより便利で、解析と処理が容易になり、より優れたデータ対話が可能になります。

(9). データの説明。 JSON は XML に比べてデータの記述が不十分です。
(10)。 JSON は XML よりもはるかに高速です。

4. XML と JSON データ形式の比較
(1). 軽量と重量は相対的なものなので、XML の重量は JSON と比べてどこに反映されるのでしょうか? 2 つの解析方法: DOM と SAX。 f35d6e602fd7d0f0edfa6f7d103c1b57.DOMDOM はデータ交換形式 XML を DOM オブジェクト として扱い、XML ファイル全体をメモリに読み込む必要があります。この点では JSON と XML の原則は同じですが、XML は親を考慮する必要があります。ノードと子ノード。JSON は 2 つの構造に基づいて構築されているため、この時点では解析はそれほど難しくありません。キーと値のペアのコレクション。これは次のように理解できます。配列; 2cc198a1d5eb0d3eb508d858c9f5cbdb。SAXSAX は、ドキュメント全体を読み取ることなく、解析されたコンテンツを処理できます。プログラムはいつでも解析を終了することができます。このように、大きな文書を少しずつ段階的に表示できるため、SAX は大規模な解析に適しています。現在、これは JSON では不可能です。したがって、JSON と XML のライトウェイトとヘビーウェイトの違いは次のとおりです。JSON は全体的な解析ソリューションのみを提供し、この方法は解析するデータが少ない場合にのみ良好な結果を得ることができます。XML は大規模なデータ スキームの段階的な解析を提供します。大量のデータを処理するのに非常に適しています。

(2). データ形式のエンコードと解析の難しさについて

エンコードに関して。 XML と JSON にはそれぞれ独自のエンコード ツールがありますが、JSON のエンコードは XML よりも簡単です。ツールを使用しなくても JSON コードを作成できますが、XML や JSON のような優れた XML コードを作成するのは少し困難です。これもテキストベースであり、すべて Unicode エンコーディングを使用しており、データ交換形式 XML と同じくらい読みやすいです。主観的には、JSON の方がクリーンで冗長性が低くなります。 JSON Web サイトでは、JSON 構文の簡潔ではあるが厳密な説明が提供されています。一般に、XML はドキュメントのマーク付けに適しており、JSON はデータ交換処理に適しています。

分析の観点から。通常の Web アプリケーションの分野では、サーバー側で XML を生成または処理する場合でも、JavaScript を使用してクライアント側で XML を解析する場合でも、開発者は XML の解析に悩むことが多く、コードが複雑になり、開発効率が非常に低下することがよくあります。実際、ほとんどの Web アプリケーションでは、データを送信するために複雑な XML はまったく必要ありません。XML が主張する拡張性がここで有利になることはほとんどありません。多くの Ajax アプリケーションは、動的 Web ページを構築するために HTML フラグメントを直接返すことさえあります。 XML を返して解析する場合と比較して、HTML フラグメントを返すとシステムの複雑さは大幅に軽減されますが、ある程度の柔軟性にも欠けます。データ交換形式 JSON は、XML や HTML フラグメントよりも優れたシンプルさと柔軟性を提供します。 Web サービス アプリケーションでは、少なくとも現時点では、XML は依然として揺るぎない地位を占めています。

(3). 比較の例 XML と JSON はどちらも構造化メソッドを使用してデータをマークします。以下で簡単に比較してみましょう。

[
  {
    "length" : "12",
    "url" : "http:\/\/127.0.0.1\/
resource
s\/videos\/minion_01.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_01.png",
    "ID" : "01",
    "name" : "小黄人 第01部"
  },
  {
    "length" : "14",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_02.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_02.png",
    "ID" : "02",
    "name" : "小黄人 第02部"
  },
  {
    "length" : "16",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_03.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_03.png",
    "ID" : "03",
    "name" : "小黄人 第03部"
  },
  {
    "length" : "18",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_04.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_04.png",
    "ID" : "04",
    "name" : "小黄人 第04部"
  },
  {
    "length" : "20",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_05.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_05.png",
    "ID" : "05",
    "name" : "小黄人 第05部"
  },
  {
    "length" : "22",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_06.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_06.png",
    "ID" : "06",
    "name" : "小黄人 第06部"
  },
  {
    "length" : "24",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_07.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_07.png",
    "ID" : "07",
    "name" : "小黄人 第07部"
  },
  {
    "length" : "26",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_08.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_08.png",
    "ID" : "08",
    "name" : "小黄人 第08部"
  },
  {
    "length" : "28",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_09.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_09.png",
    "ID" : "09",
    "name" : "小黄人 第09部"
  },
  {
    "length" : "30",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_10.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_10.png",
    "ID" : "10",
    "name" : "小黄人 第10部"
  },
  {
    "length" : "32",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_11.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_11.png",
    "ID" : "11",
    "name" : "小黄人 第11部"
  },
  {
    "length" : "34",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_12.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_12.png",
    "ID" : "12",
    "name" : "小黄人 第12部"
  },
  {
    "length" : "36",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_13.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_13.png",
    "ID" : "13",
    "name" : "小黄人 第13部"
  },
  {
    "length" : "38",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_14.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_14.png",
    "ID" : "14",
    "name" : "小黄人 第14部"
  },
  {
    "length" : "40",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_15.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_15.png",
    "ID" : "15",
    "name" : "小黄人 第15部"
  },
  {
    "length" : "42",
    "url" : "http:\/\/127.0.0.1\/resources\/videos\/minion_16.mp4",
    "image" : "http:\/\/127.0.0.1\/resources\/images\/minion_16.png",
    "ID" : "16",
    "name" : "小黄人 第16部"
  }
]

XML

<?xml version="1.0" encoding="UTF-8"?>
<vedios>
<vedio ID = "01" name = "小黄人 第01部" length = "12" image = "http://127.0.0.1/resources/images/minion_01.png" url = "http://127.0.0.1/resources/videos/minion_01.mp4" />    
<vedio ID = "02" name = "小黄人 第02部" length = "14" image = "http://127.0.0.1/resources/images/minion_02.png" url = "http://127.0.0.1/resources/videos/minion_02.mp4" />    
<vedio ID = "03" name = "小黄人 第03部" length = "16" image = "http://127.0.0.1/resources/images/minion_03.png" url = "http://127.0.0.1/resources/videos/minion_03.mp4" />    
<vedio ID = "04" name = "小黄人 第04部" length = "18" image = "http://127.0.0.1/resources/images/minion_04.png" url = "http://127.0.0.1/resources/videos/minion_04.mp4" />    
<vedio ID = "05" name = "小黄人 第05部" length = "10" image = "http://127.0.0.1/resources/images/minion_05.png" url = "http://127.0.0.1/resources/videos/minion_05.mp4" />    
<vedio ID = "06" name = "小黄人 第06部" length = "12" image = "http://127.0.0.1/resources/images/minion_06.png" url = "http://127.0.0.1/resources/videos/minion_06.mp4" />    
<vedio ID = "07" name = "小黄人 第07部" length = "16" image = "http://127.0.0.1/resources/images/minion_07.png" url = "http://127.0.0.1/resources/videos/minion_07.mp4" />    
<vedio ID = "08" name = "小黄人 第08部" length = "18" image = "http://127.0.0.1/resources/images/minion_08.png" url = "http://127.0.0.1/resources/videos/minion_08.mp4" />    
<vedio ID = "09" name = "小黄人 第09部" length = "20" image = "http://127.0.0.1/resources/images/minion_09.png" url = "http://127.0.0.1/resources/videos/minion_09.mp4" />    
<vedio ID = "10" name = "小黄人 第10部" length = "12" image = "http://127.0.0.1/resources/images/minion_10.png" url = "http://127.0.0.1/resources/videos/minion_10.mp4" />    
<vedio ID = "11" name = "小黄人 第11部" length = "13" image = "http://127.0.0.1/resources/images/minion_11.png" url = "http://127.0.0.1/resources/videos/minion_11.mp4" />    
<vedio ID = "12" name = "小黄人 第12部" length = "12" image = "http://127.0.0.1/resources/images/minion_12.png" url = "http://127.0.0.1/resources/videos/minion_12.mp4" />    
<vedio ID = "13" name = "小黄人 第13部" length = "11" image = "http://127.0.0.1/resources/images/minion_13.png" url = "http://127.0.0.1/resources/videos/minion_13.mp4" />    
<vedio ID = "14" name = "小黄人 第14部" length = "15" image = "http://127.0.0.1/resources/images/minion_14.png" url = "http://127.0.0.1/resources/videos/minion_14.mp4" />    
<vedio ID = "15" name = "小黄人 第15部" length = "14" image = "http://127.0.0.1/resources/images/minion_15.png" url = "http://127.0.0.1/resources/videos/minion_15.mp4" />    
<vedio ID = "16" name = "小黄人 第16部" length = "18" image = "http://127.0.0.1/resources/images/minion_16.png" url = "http://127.0.0.1/resources/videos/minion_16.mp4" /></vedios>

エンコードの可読性という点では、結局のところ、人間の言語がこのような記述構造に近いのは明らかです。 JSON はデータ ブロックに近いため、読むのがさらにわかりにくくなります。ただし、私たちにとって読みにくい言語は機械読み取りに適しているため、JSON の

index

country.provinces[0].name を通じて値「Heilongjiang」を読み取ることができます。コーディングの手書きの難しさという点では、XML の方が読みやすく、もちろん書きやすいです。ただし、記述される JSON 文字は明らかに大幅に少なくなります。空白のタブと改行を削除すると、JSON には有用なデータが密に詰め込まれますが、XML には繰り返しマークアップ文字が多数含まれます。

以上がXML と JSON の違いの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。