cari

详细介绍XML和JSON区别

May 07, 2017 pm 01:49 PM

今个去面试,一个人事经理问我xmljson的区别我没答上来感觉很难过,于是就回来后就查阅相关资料写点东西::

1.定义介绍
(1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
(2).JSON定义JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。
2.XML和JSON优缺点
(1).XML的优缺点

f35d6e602fd7d0f0edfa6f7d103c1b57.XML的优点  
A.格式统一,符合标准;  
B.容易与其他系统进行远程交互,数据共享比较方便。

2cc198a1d5eb0d3eb508d858c9f5cbdb.XML的缺点  
A.XML文件庞大,文件格式复杂,传输占带宽;  
B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;  
C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;  
D.服务器端和客户端解析XML花费较多的资源和时间。

(2).JSON的优缺点

f35d6e602fd7d0f0edfa6f7d103c1b57.JSON的优点:  
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;  
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;  
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;  
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象数组等能直接生成JSON格式,便于客户端的访问提取;  
E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

2cc198a1d5eb0d3eb508d858c9f5cbdb.JSON的缺点  
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;  
B.JSON格式目前在Web Service中推广还属于初级阶段。

3.XML和JSON的优缺点对比

(1).可读性方面。JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。
(2).可扩展性方面。XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
(3).编码难度方面。XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
(4).解码难度方面。XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
(5).流行度方面。XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
(6).解析手段方面。JSON和XML同样拥有丰富的解析手段。
(7).数据体积方面。JSON相对于XML来讲,数据的体积小,传递的速度更快些。
(8).数据交互方面。JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
(9).数据描述方面。JSON对数据的描述性比XML较差。
(10).传输速度方面。JSON的速度要远远快于XML。

4.XML与JSON数据格式比较
(1).关于轻量级和重量级轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?应该体现在解析上,XML目前设计了两种解析方式:DOM和 SAX。f35d6e602fd7d0f0edfa6f7d103c1b57.DOMDOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;

2cc198a1d5eb0d3eb508d858c9f5cbdb.SAXSAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。所以,JSON和XML的轻/重量级的区别在于:JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。

(2).关于数据格式编码及解析难度

f35d6e602fd7d0f0edfa6f7d103c1b57.在编码方面。虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。

2cc198a1d5eb0d3eb508d858c9f5cbdb.在解析方面。在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数Web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势,许多Ajax应用甚至直接返回HTML片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。在Web Serivice应用中,至少就目前来说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>

编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“黑龙江”这个值。编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。

Atas ialah kandungan terperinci 详细介绍XML和JSON区别. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Dokumen RSS: Asas Sindikasi WebDokumen RSS: Asas Sindikasi WebApr 18, 2025 am 12:04 AM

Dokumen RSS adalah fail berstruktur berasaskan XML yang digunakan untuk menerbitkan dan melanggan kandungan yang sering dikemas kini. Fungsi utamanya termasuk: 1) kemas kini kandungan automatik, 2) pengagregatan kandungan, dan 3) meningkatkan kecekapan pelayaran. Melalui RSSFEED, pengguna boleh melanggan dan mendapatkan maklumat terkini dari sumber yang berbeza tepat pada masanya.

Penyahkodan RSS: Struktur XML suapan kandunganPenyahkodan RSS: Struktur XML suapan kandunganApr 17, 2025 am 12:09 AM

Struktur XML RSS termasuk: 1. XML Deklarasi dan versi RSS, 2. Saluran (saluran), 3. Item. Bahagian ini membentuk asas fail RSS, yang membolehkan pengguna mendapatkan dan memproses maklumat kandungan dengan menghuraikan data XML.

Cara Menguruskan dan Menggunakan Suapan RSS Berasaskan XMLCara Menguruskan dan Menggunakan Suapan RSS Berasaskan XMLApr 16, 2025 am 12:05 AM

Rssfeedsusexmltosyndicatecontent; parsingtheminvolvesloadingxml, navigatingitssstructure, andextractingdata.applicationsincludeBuildingNewsaggregatorsandtrackingpodcastepisodes.

Dokumen RSS: Bagaimana mereka menyampaikan kandungan kegemaran andaDokumen RSS: Bagaimana mereka menyampaikan kandungan kegemaran andaApr 15, 2025 am 12:01 AM

Dokumen RSS berfungsi dengan menerbitkan kemas kini kandungan melalui fail XML, dan pengguna melanggan dan menerima pemberitahuan melalui pembaca RSS. 1. Penerbit Kandungan mencipta dan mengemas kini dokumen RSS. 2. Pembaca RSS kerap mengakses dan memasangkan fail XML. 3. Pengguna melayari dan membaca kandungan yang dikemas kini. Contoh Penggunaan: Langgan suapan RSS TechCrunch, hanya salin pautan ke pembaca RSS.

Suapan bangunan dengan XML: Panduan tangan ke RSSSuapan bangunan dengan XML: Panduan tangan ke RSSApr 14, 2025 am 12:17 AM

Langkah -langkah untuk membina RSSFeed menggunakan XML adalah seperti berikut: 1. Buat elemen akar dan tetapkan versi; 2. Tambah elemen saluran dan maklumat asasnya; 3. Tambah elemen kemasukan, termasuk tajuk, pautan dan keterangan; 4. Tukar struktur XML ke rentetan dan outputnya. Dengan langkah -langkah ini, anda boleh membuat RSSFeed yang sah dari awal dan meningkatkan fungsinya dengan menambahkan elemen tambahan seperti tarikh pelepasan dan maklumat pengarang.

Membuat Dokumen RSS: Tutorial Langkah demi LangkahMembuat Dokumen RSS: Tutorial Langkah demi LangkahApr 13, 2025 am 12:10 AM

Langkah -langkah untuk membuat dokumen RSS adalah seperti berikut: 1. Tulis dalam format XML, dengan elemen akar, termasuk unsur -unsur. 2. Tambah, dan sebagainya. Unsur untuk menerangkan maklumat saluran. 3. Tambah elemen, masing -masing mewakili kemasukan kandungan, termasuk ,,,,,,,,,,,. 4. Secara pilihan menambah dan elemen untuk memperkayakan kandungan. 5. Pastikan format XML betul, gunakan alat dalam talian untuk mengesahkan, mengoptimumkan prestasi dan menyimpan kandungan yang dikemas kini.

Peranan XML dalam RSS: asas kandungan sindiketPeranan XML dalam RSS: asas kandungan sindiketApr 12, 2025 am 12:17 AM

Peranan teras XML dalam RSS adalah untuk menyediakan format data standard dan fleksibel. 1. Ciri -ciri bahasa dan markup XML menjadikannya sesuai untuk pertukaran data dan penyimpanan. 2. RSS menggunakan XML untuk membuat format piawai untuk memudahkan perkongsian kandungan. 3. Permohonan XML dalam RSS termasuk unsur -unsur yang menentukan kandungan suapan, seperti tajuk dan tarikh pelepasan. 4. Kelebihan termasuk penyeragaman dan skalabiliti, dan cabaran termasuk keperluan sintaks dokumen dan ketat. 5. Amalan terbaik termasuk mengesahkan kesahihan XML, memastikan ia mudah, menggunakan CDATA, dan sentiasa mengemas kini.

Dari XML ke Kandungan Boleh Dibaca: Demystifying RSS FeedDari XML ke Kandungan Boleh Dibaca: Demystifying RSS FeedApr 11, 2025 am 12:03 AM

Rssfeedsarexmldocumentsedforcontentaggregationanddistribution.totransformthemintoreadableContent: 1) ParsethexmlusingLibrariesLikeFeedParserinpython.2)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma