XML을 Java 값 객체로 어떻게 변환합니까?
-
13-09-2019 - |
문제
XML을 Java 값 객체로 변환하기 위해 어떤 종류의 오픈 소스 라이브러리를 사용할 수 있습니까?
.NET에는 XML 직렬화 및 속성으로 쉽게이를 수행 할 수있는 방법이 있습니다. 나는 Java에서 어떤 유사점이 있다고 상상할 것입니다. DOM 또는 Sax 파서 로이 작업을 수행하는 방법을 알고 있지만 더 쉬운 방법이 있는지 궁금합니다.
이런 모습을 보이는 사전 정의 된 XML 형식이 있습니다.
<FOOBAR_DATA>
<ID>12345</ID>
<MESSAGE>Hello World!</MESSAGE>
<DATE>22/04/2009</DATE>
<NAME>Fred</NAME>
</FOOBAR_DATA>
.NET에서는 내 객체를 데이터에 바인딩하기 위해 이와 같은 작업을 수행 할 수 있습니다.
using System;
using System.Xml.Serialization;
namespace FooBarData.Serialization
{
[XmlRoot("FOOBAR_DATA")]
public class FooBarData
{
private int _ID = 0;
[XmlElement("ID")]
public int ID
{
get { return this._ID; }
set { this._ID = value; }
}
private string _Message = "";
[XmlElement("MESSAGE")]
public string Message
{
get { return this._Message; }
set { this._Message = value; }
}
private string _Name = "";
[XmlElement("NAME")]
public string Name
{
get { return this._Name; }
set { this._Name = value; }
}
private Date _Date;
[XmlElement("DATE")]
public Date Date
{
get { return this._Date; }
set { this._Date= value; }
}
public FooBarData()
{
}
}
}
.NET 또는 아마도 최대 절전 모드와 유사한 주석을 사용하는 방법이 있는지 궁금해하여 값 객체를 사전 정의 된 -XML에 바인딩 할 수 있습니다.
해결책
좋아요 xstream 특히 JAXB와 비교하여 ALOT- JAXB와 달리 XStream은 XSD를 가질 필요가 없습니다. XSD를 생성 할 필요가없고, 스키마에서 클래스를 생성하기 위해 jaxc를 실행할 필요가 없어도 XML로 직렬화되고 XML로 사라질 수있는 소수의 클래스가 있다면 좋습니다. 반면에 Xstream은 예쁘다. 경량.
(물론, JaxB가 적절한 곳이 많습니다.
다른 팁
JaxB XSD (XML Schema) 파일을 Java 클래스 모음으로 변환 할 수 있습니다. 이것은보다 "구조화 된"일 수 있습니다 XMLEncoder
/Serializable
Andy의 (우수한) 답변이 제공하는 접근.
Java는 있습니다 xmlencoder XML에 객체를 직렬화하는 데 사용할 수 있습니다. 유일한 요구 사항은 객체가 "직렬화 가능"을 구현하는 것입니다.
예는 다음과 같습니다.
Jibx 또 다른 옵션입니다.
Java-to-XML 데이터 바인딩에 대한 자세한 내용은 참조하십시오 Java의 XML 직렬화?