[편집자 주] 이 기사의 저자인 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에는 최소한 다음과 같은 네 가지 중요한 특성이 있습니다.
속성 및 네임스페이스위의 id 속성과 마찬가지로 메타데이터를 XML 데이터에 추가할 수 있습니다. 데이터는 책 저자의 이름과 같은 요소에 보관되며, 메타데이터(데이터의 데이터)는 속성으로 보관되어야 정보를 구성하고 구조화하는 것이 훨씬 쉬워집니다. 가장 중요한 점은 요소와 속성 모두 네임스페이스에 속하는 것으로 표시할 수 있다는 것입니다. 이는 여러 애플리케이션이 동일한 XML 문서를 사용할 때 특히 유리합니다.
이러한 상황을 상상해 보십시오. 컴퓨터에서 XML 문서를 생성할 때 여러 가지 수정 사항이 발생했습니다. 다른 컴퓨터에서 여러 번 전송한 후 다른 컴퓨터로 전송하여 사용하기 때문에 중간 작업으로 인해 문서 구조가 손상되지 않도록 해야 했습니다. 예를 들어, 한 사람은 발행 날짜를 저장하기 위해 d98e152921a303f4dbabe7ffa3952f8d를 사용할 수 있지만 다른 사람은 ISO-8601 형식으로 1d78a9a384cca7aba89b0d5f2a964e41를 사용할 수 있습니다. 이러한 구조적 혼란을 피하기 위해 설명 문서 XML 스키마를 생성하고 이를 기본 문서와 함께 저장할 수 있습니다. 기본 문서에 대한 각 작업 전에 스키마 파일을 통해 정확성을 확인해야 합니다. 이는 제작 과정에서 일종의 통합 테스트입니다. RelaxNG에는 비슷한 메커니즘이 있지만 훨씬 간단합니다. XML 스키마가 너무 복잡하다고 생각되면 RelaxNG를 사용해 보세요.
사실 XML 문서 수정은 Java/Ruby 코드 없이도 완료할 수 있습니다. 간단히 말해서, XSL 변환 문서를 생성하고 이를 원본 XML에 적용하여 새 XML을 얻으면 됩니다. XSL 언어(Purely Functional Language)는 계층적 데이터 조작을 위해 설계되었으며 Java나 다른 객체 지향/절차적 언어보다 이 작업에 더 적합합니다. XSL을 사용하면 XML을 일반 텍스트와 HTML을 포함한 모든 형식으로 변환할 수 있습니다. 많은 사람들이 XSL이 너무 복잡하다고 불평하지만 XSL의 핵심 기능은 실제로 매우 간단하므로 시도해 보는 것이 좋습니다. 위의 내용이 XML의 모든 기능은 아니지만 이 네 가지 기능은 실제로 매우 유용합니다. 문서를 "자급자족"으로 만들 수 있을 뿐만 아니라 자체 유효성 검사(XML 스키마)를 수행한 다음 문서 수정 방법(XSL)을 알 수 있으며 마지막으로 문서 콘텐츠(Xpath)를 쉽게 얻을 수 있습니다.
동시에 Xforms, SVG, MathML, RDF, OWL, WSDL 등을 포함하여 많은 XML 기반 언어, 표준 및 애플리케이션이 시장에 나와 있습니다. 하지만 너무 타겟이 명확하기 때문에 일반적인 주류 프로젝트에서는 사용되지 않습니다.
JSON을 디자인하는 목적은 위의 특성을 충족시키는 것이 아닙니다. 강력한 XML에 비해 쿼리를 위한 JSONPath, 일부 변환 도구 및 유효성 검사를 위한 json-schema를 포함하여 JSON 필드가 현재 열심히 노력하고 있지만, 그저 사소한 모방일 뿐 장기적인 발전이 있을 것 같지 않고 조만간 사라질 것입니다.
요약하자면 JSON은 추가 기능이 너무 많지 않은 단순한 데이터 형식입니다. AJAX를 사용하는 경우가 가장 좋습니다. 그렇지 않은 경우에는 XML을 사용하는 것이 좋습니다.
OneAPM은 엔드투엔드 Java 애플리케이션 성능 솔루션을 제공합니다. 우리는 모든 일반적인 Java 프레임워크와 애플리케이션 서버를 지원하여 시스템 병목 현상을 신속하게 발견하고 이상 현상의 근본 원인을 찾을 수 있도록 돕습니다. 몇 분 만에 배포하고 즉시 경험해보세요. Java 모니터링이 그 어느 때보다 쉬워졌습니다. 더 많은 기술 기사를 읽으려면 OneAPM 공식 기술 블로그를 방문하세요.
위 내용은 JSON과 XML의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!