2010-02-01 1 views
1

XML에 직렬화하는 방법을 검색 할 때마다 bean serializers가 발견되었습니다. 모든 것이 나의 목적을 무너 뜨리는 재산으로 선언되어야하는 것 같습니다. 나는 XML로 복잡한 계층 구조를 직렬화하기를 원할 것이다. 부모 객체로 사전이나리스트를 시작한다.자바 : 컬렉션 XML 직렬화

자동 XML 직렬화에는 어떤 옵션이 있습니까?

2004 년부터 JAXB에 대한 언급이 있었지만 아직 갈 길이 멀지 않은가요?

답변

3

XStream 라이브러리를 사용해보십시오. 복잡한 객체 계층 구조를 쉽게 직렬화 할 수 있습니다.

+0

재미있을 것 같습니다. 내장 자바가 마음에 들지만 사용의 용이성이 핵심입니다. –

3

특히 NetBeans에서 JAXB를 지원할 때 JAXB에서 많은 성공을 거두었습니다. 나는 그것이 목록을 지원한다는 사실을 안다. 나는 그것을지도로 시도하지는 않았지만 그것이 효과가 있다고 생각한다. 그 밖의 것이 없다면,리스트가 들어있는 간단한 빈을 만들어서 직렬화 된 빈이라고하자.

+0

JAXB는 그렇습니다. 아직 갈 길이 멀습니다. – GreenieMeanie

+0

사실, 질문을 다시 읽으면, 데이터에 어떤 종류의 구조가 포함되는지 미리 알 수 없다는 말입니까? – Jon

+0

네,하지만 다른 모든 것을 담고있는 클래스의 타입을 알고 있습니다. –

1

standard java.bean.XMLEncoder/Decoder 클래스를 사용하면 XML을 통해 메서드 호출을 허용하기 때문에 컬렉션을 serialize 할 수 있습니다. 출력은 같은 뭔가 같습니다이 약점을 가지고 물론

<object class="java.util.ArrayList"> 
    <void method="add"> 
    <string>Hello</string> 
    </void> 
    <void method="add"> 
    <string>World</string> 
    </void> 
</object> 

을; 예를 들어 Collections.emptyXXXX()을 쉽게 직렬화 할 수는 없지만 해결 방법이 있습니다. 그러나 모두가 공개적으로 지원되는 API 클래스에 따라 작동하므로 영구 XML 양식은 스키마 변경에 대해 복원력이 있습니다.

나는 자바 객체를위한 매우 유용한 지속적인 메커니즘을 발견했다.

+0

음 ... 음 ... 마지막으로 테스트를하다 보니 작동하지 않았습니다. 나는 다시 시도하고 그것을한다면 당신을 upvote. –

+0

그럼 내 upvote는 어딨습니까? 나는 그것을 기반으로 시스템을 작성했기 때문에 작동한다는 것을 알고있다 :-) –