Java에서 나타내는 객체는 실제 XML 객체이므로 XML로 직렬화하는 것이 적절합니까?
나는 당신이 DOM 같은 것을 의미 가정합니다. 그리고 나서 XML 바인딩을 사용하여 직렬화합니다 ... DOM 객체를 POJO로 취급합니다!
나쁜 생각, IMO.
그렇지 않은 경우 성능상의 이유로는 왜 나쁜 생각입니까?
- 직렬화 및 직렬화 해제 성능이 좋지 않습니다.
- 직렬화 된 형식이 비대화됩니다.
- 생성 된 XML을 읽을 수 없습니다. 과정에 다른 어떤 어려운
- 직렬화됩니다. XSLT 변환을 시도해보십시오. 이벤트 기반 파서 (parser)를 사용하여 처리하려고합니다.
실제로 나는 이것이 어떤 좋은 생각 일 수 있다고 생각하는 데 어려움을 겪고 있습니다.
UPDATE
귀하의 설명합니다 (업데이트/의견에) 왜 일에 관해서는이 설득력이 있습니다
는
은 사용자 정의 직렬화 된 형식을 고려하는 것이 적절한 때 객체의 논리적 구현은 실제 구현과 크게 다릅니다 (Bloch의 Effective Java, 항목 75). 사용자 정의 표현을 사용을 고려에
블로흐의 조언이다. 그리고 그것은 당신이 당신 앞에서 가지고있는 표준 표현보다 더 나은 사용자 정의 표현을 고려한다는 가정에 암시되어 있습니다.
필자의 경우 실제 형식은 논리적 형식과 크게 다를 수 있으며 사용자 지정 직렬 표현이 적합합니다.
왜 XML에서 DOM을 처음으로 표현하려고하는지 설명하지 않습니다. 또는 그것이 왜 더 낫다고 생각하는지.
객체가 항상 XML로 표현 될 수있을 것입니다 때문에
, 그것은
당신은 논리 것을 설명하지 않은 ..., 논리적으로 잘 맞는 것 같다.
...하지만 자바 언어 (I.E. 성능)와의 관련성을 이해하려고합니다.
음의 의미는 위에서 설명한대로입니다. 그리고 이것에 관해서 자바는 특별한 것이 없습니다.
확인을 다른 관점에서 살펴 봅니다.
- 정보가 있습니다.
- 정보를 XML로 나타냅니다.
- XML을 구문 분석하여 메모리 내 표시 (DOM)를 제공합니다.
- jaxb와 같은 것을 적용하여 DOM의 XML 표현을 제공합니다 ... POJOS로 표시
- DOM을 직렬화합니다.
원본 정보를 나타내는 XML을 나타내는 Java 객체의 XML 표현으로 끝나는 대상.
원래의 정보를 XML로 표현한 것보다 어떤 효과가 있습니까?
이제 3 단계에서 jaxb를 사용하고 사용자 정의 Java 클래스로 직렬화 해제 한 다음 해당 Java 클래스를 직렬화하면 의미가 있습니다. 그렇지만 "XML 요소를 나타내는 Java 객체"가 없습니다. 오히려 원본 XML으로 표현 된 정보를 나타내는 Java 객체가 있습니다.
귀하의 질문에 실제로 쓴 내용과 완전히 다릅니다. 그것이 당신이 의미하는 바라면, 사람들이 왜 당신을 이해하지 못했는지 그리고 당신이 실제로 말한 것이 거의/전혀 틀림 없다고 생각했는지를 설명합니다.
'실제 XML 개체'는 무엇을 의미합니까? JAX-B는 대부분의 Java 객체를 직렬화 할 수 있습니다. – bmargulies
이것은 실제로 당신이 성취하고자하는 것에 달려 있습니다 ... 귀하의 비즈니스 요구 사항을 충족시키는 데 필요합니까? 당신이 말했듯이, 비싸기 때문에 당신은 마샬링과 비 정렬 화를 원하지 않습니다. – Geoff
자바 객체가 XML 표준을 나타냅니다. 예를 들어 Java의 SOAP 객체는 XML을 나타냅니다. 객체는 구현하는 XML 표준에 의해 항상 표현 될 수 있어야합니다. JAXB 부분에 대해서는 객체를 올바르게 나타내는 JAXB 요소가 포함 된 컴포지션을 사용하고 있습니다. 그러나 내가 사용하고있는 컨텍스트는 JAXB가 제공하지 않는 추가 논리적 검사를 필요로합니다. – JoshC13