XML, pek çok lezzet ve kullanım içeren bir araçtır. XML bazı şeylerde üstündür ve bazılarında berbattır. Sanırım sorunlardan biri, insanların gereksiz yere karmaşık ve adlarını ve saçma sapan karmaşık "kurumsal" XML gördüklerini düşünüyorum (SOAP, herkes?). İnsanlar için XML formatları tasarlamanın püf noktası, verileri okumak için ezici hale getirmezken verilere gerçek anlam katmaktır.
İnsanların uğraştığı şeylerden biri, XML'in bazen bir karakterde ya da bazı parantezlerde boğulmasıdır. Bununla birlikte, bunun için hem ters hem de dezavantaj vardır. Bunun tersi, farklı yarı-geçersiz sözdizimi durumlarının farklı şekilde yorumlanabildiği HTML'de olduğu gibi belirsizliğin olmamasıdır.
Dezavantajı ise, yazarın yazması biraz zor, öğrenmesi daha zor. HTML kadar XML kadar katı olsaydı, web'in bu kadar hızlı olamayacağına dair bir argüman olduğunu kabul ediyorum, ancak bugün olsaydı da sevineceğimizi savunuyorum. :)
Ayrıca, onu her şey için kullanmayın, çünkü onu doğru şekilde uygulamak için gereken anlamı ve yargıya sahip olabilirsiniz. Sahip olduğunuz tek şey XML ise, her zaman istediğinizden uzakta bir XSLT dönüşümü olma eğilimindedir. :)
Biçimin yalnızca insanların kendisiyle etkileşime girmesi gerektiğinde gerçekten önemli olduğunu savunuyorum. Bir şeyi seri hale getiren ve başka programlarınız tarafından tüketilmesi gereken bir yere gönderen bir program yazıyorsanız, mümkün olduğu kadar verimli göründüğü kimin umurunda? Tek umursadığım her şey için bir ikili format, tavşanlar ve tek boynuzlu atları kullanın.
XML'in Artıları
- YAML ve JSON’un bilmediği pek çok ileri durumu kapsar
- Bir dizi farklı platform ve dilde XML'in ayrıştırılması ve doğrulanması için mükemmel araçlar vardır.
- XML kolayca ve güçlü bir şekilde başka bir formata dönüştürülebilir (XSLT gibi şeyler aracılığıyla)
- Makul XML belgeleri, insanların okuması ve düzenlemesi için basittir; Bana JSON'un daha kolay olduğunu söyleme, değil :)
- XML bir dereceye kadar kendini tanımlamaktadır, yani doğrudan yapısı ve anlamı hakkında bilgi içerir (çoğu ikili formatın aksine)
- Kodlama kolları
- Platformlar arası agnostik, platformlar arası daha kolay kullanım sağlar
- İyi biçimlendirilmemişse kırılır (Verilerin yapısal olarak doğru olmasını sağlar)
- SGML değil
Eksileri
- gereksiz sözlerle dolu
- İkili olarak ayrıştırmak kadar hızlı değil
- İyi biçimlendirilmemişse kırılır (başvurunuzu kilitler)
İyi kullanımlar
- Yapılandırma dosyaları
- Veri değişim formatları
- Sürüm esnek dosya formatları
- Belgeleri veritabanlarında saklamak
Çok iyi değil kullanımlar
- Veri aktarma formatları
- Nesnelerin Serileştirilmesi
- İlişkisel verileri veritabanlarında saklamak
- Yüksek performanslı I / O senaryoları için dosya formatı