XML 데이터 바인딩
XML data bindingXML 데이터 바인딩은 컴퓨터 메모리의 비즈니스 객체로서 XML 문서의 정보를 나타내는 수단을 말합니다.이것에 의해, 애플리케이션은, DOM 나 SAX 를 사용해 XML 그 자체의 직접 표현으로부터 데이터를 취득하는 대신에, 오브젝트에서 XML 의 데이터에 액세스 할 수 있습니다.
묘사
XML 데이터 바인더는 바인드하려는 문서의 XML 스키마 요소와 메모리에 표현되는 클래스의 구성원 간에 매핑을 자동으로 생성함으로써 이를 실현합니다.
XML 문서를 개체로 변환하기 위해 이 프로세스를 적용하는 경우, 이를 언마셜링이라고 합니다.개체를 XML로 직렬화하는 역프로세스를 마샬링이라고 합니다.
데이터 바인딩에 대한 접근 방식은 다음과 같이 구분할 수 있습니다.
- XML 스키마 기반:기존 XML 스키마를 기반으로 스키마에 대응하는 클래스가 생성됩니다.
- 클래스 베이스:시리얼화하는 클래스 세트에 근거해, 대응하는 XML 스키마가 생성된다.
- 매핑 기반:매핑 설명(일반적으로 XML 문서 자체)은 기존 XML 스키마가 클래스 집합에 매핑되는 방법을 설명합니다.
애로
XML은 본질적으로 순차적이며 개체는 그렇지 않기 때문에 XML 데이터 바인딩 매핑은 XML 문서의 모든 정보를 유지하는 데 어려움을 겪는 경우가 많습니다.특히 주석, XML 엔티티 참조 및 형제 순서와 같은 정보는 바인딩 응용 프로그램에 의해 작성된 개체 표현에서 유지되지 않을 수 있습니다.이러한 경우가 항상 있는 것은 아닙니다.충분히 복잡한 데이터 바인더는 XML 문서의 정보를 100% 보존할 수 있습니다.
마찬가지로 컴퓨터 메모리 내의 오브젝트는 본질적으로 순차적이지 않고 다른 오브젝트(자기 참조 링크 포함)로의 링크가 포함될 수 있으므로 XML 데이터 바인딩 매핑은 오브젝트가 XML에 마샬링될 때 오브젝트에 대한 모든 정보를 유지하는 데 어려움을 겪는 경우가 많습니다.
대체 수단
대신 XML에서 데이터를 추출하는 수작업 XPath 식을 사용합니다.이 방법에는 많은 이점이 있습니다.첫째, 데이터 바인딩 코드에는 XML 트리 구조에 대한 근접 지식(토폴로지, 태그 이름 등)만 필요합니다.개발자는 XML 데이터를 보고 판단할 수 있습니다.XML 스키마는 더 이상 필수 사항이 아닙니다.게다가 XPath 를 사용하면, 애플리케이션은 관련의 데이터 항목을 바인드 해, 그 외의 모든 것을 필터링 할 수 있기 때문에, XML 문서 전체의 마샬링을 완전하게 해제하기 위해서 필요한 불필요한 처리를 회피할 수 있습니다.이 접근법의 단점은 객체모델과 XPath 식을 구현하는 자동화가 부족하다는 것입니다.대신 애플리케이션 개발자는 이러한 아티팩트를 수동으로 생성해야 합니다.
일반적인 데이터 바인딩
XML 데이터 바인딩의 강점 중 하나는 프로그램, 언어 및 플랫폼 간에 개체를 직렬화/비직렬화하는 기능입니다.내장된 프로세서에 C(프로그래밍 언어)로 작성된 Datalogger에서 구조화된 객체의 시계열을 덤프하여 네트워크를 통해 Perl로 처리하고 마지막으로 옥타브로 시각화할 수 있습니다.구조와 데이터는 이동 내내 일관성과 일관성을 유지하며 커스텀 형식이나 파싱이 필요하지 않습니다.이것은 XML에만 있는 것이 아닙니다.예를 들어 YAML은 XML을 대체하는 강력한 데이터 바인딩으로 부상하고 있습니다.JSON(YAML의 서브셋으로 간주할 수 있음)은 많은 경우 경량 또는 제한된 애플리케이션에 적합합니다.
XML 데이터 바인딩 프레임워크
이름. | 프로그래밍 언어 | 면허증. | 초판 | 최종 안정 릴리즈 | XSD로부터의 코드 생성 | 커스텀 맵핑 | 메모 |
---|---|---|---|---|---|---|---|
Apache Commons Betwixt | 자바 | 아파치 | 2003년 1월 28일( | 0.8 | 불명 | 불명 | 휴면.XML 스키마 정의 없이 개체를 XML로 직렬화합니다. |
Apache XMLBeans | 자바 | Apache 라이센스 2.0 | 3.1.0, 2019년 3월 26일( | 네. | 불명 | ||
캐스터 | 자바 | 아파치 2.0 | 1.4.1, 2016년 5월 15일( | 불명 | 불명 | 이전 버전에서도 Java-to-SQL 지속성을 지원했지만 이후 별도의 프로젝트로 분할되었습니다. | |
코드 합성 XSD | C++ | GNU GPL 및 독자 사양 | 4.0.0, 2014년 7월 22일 ( | 불명 | 불명 | C++ 클래스로의 SAX 또는 트리형 매핑을 사용합니다. | |
gSOAP | C 및 C++ | GNU GPL 및 독자 사양 | 2000년 12월 | , 전2.8.94, 2019년 10월 17일( | 네. | 네. | XML 스키마, WSDL 및 SOAP 지원.C/C++ 데이터를 XML로 시리얼화하기 위해 XML 스키마가 필요하지 않습니다.유형 매핑 파일을 통해 XML 스키마 유형을 C/C++ 유형으로 커스텀 매핑하고 소스 코드 주석을 사용하여 C/C++ 유형에서 호환 가능한 XML 스키마 유형으로 C/C++ 유형 매핑합니다. |
XML 바인딩을 위한 Java 아키텍처(JAXB) | 자바 | ? | 네. | 네. | |||
JiBX | 자바 | BSD 라이선스 | 1.2.6, 2015년 1월 1일( | 네. | 네. | 바이트 코드 조작을 통해 클래스를 XML 스키마에 매핑합니다. | |
간단하죠. | 자바 | 아파치 2.0 | 2.7.1 2017년 2월 9일( | 아니요. | 네. | ||
System.Xml.시리얼화 | C# | ? | 네. | 아니요. | 의 일부입니다.NET 프레임워크, XML 데이터 바인딩 클래스를 포함합니다.다음 포함xsd.exe XSD 스키마에서 클래스를 생성하는 도구 | ||
xmlbeansxxx | C++ | 아파치 2.0 | 2008년 4월 1일 0.9.1 ( | 불명 | 불명 | Apache XMLBeans의 C++ 포트 | |
익스트림 | 자바 | BSD 스타일 라이선스 | 2004년 1월 1일, | 전(2017년 5월 23일 1.4.10( | 불명 | 불명 | JSON에 시리얼화할 수도 있습니다. |
제우스 | 자바 | ? | 3.5 베타판, 2002년8월 16일 ( | 불명 | 불명 |
「 」를 참조해 주세요.
레퍼런스
외부 링크
- XML 데이터 바인딩 리소스(Ronald Bourret)
- 데이터 바인딩 작업 그룹을 위한 XML 스키마 패턴