2016-12-13 5 views
0

Retrofit을 사용하여 REST 끝점에 엔티티를 POST하려고합니다. 끝점 코드를 제어 할 권한이 없습니다.Root 항목이없는 항목 목록을 XML로 Retrofit에 게시 할 수 있습니다.

엔티티는 다른 엔티티의 오브젝트 목록으로 구성됩니다.

public class DemoEntity { 
    @ElementList(inline = true); 
    private List<SubEntry> entries; 
} 

@Root(name = "subEntry") 
public class SubEntry { 
    @Attribute(name = "attr") 
    private String attribute; 
} 

나는 결과 XML이

<?xml version="1.0"...> 
<subEntry attr="a" /> 
<subEntry attr="b" /> 
<subEntry attr="c" /> 

그러나 시리얼 라이저는 항상 DemoEntity의 루트 요소를 포함처럼 보이게합니다.

<?xml version="1.0"... ?> 
<DemoEntity> 
    <subEntry attr="a" /> 
    <subEntry attr="b" /> 
    <subEntry attr="c" /> 
</DemoEntity> 

루트 요소를 "무시"하는 기본 (및 올바른) 동작을 우회하는 방법이 있습니까?

답변

1

시리얼 라이저는 XML의 공식 사양을 따르는 것 같습니다. SO answer 다음을 확인할 수 있습니다. 기본적으로 잘 구성된 XML과 표준을 준수하려면 루트 요소가 필요합니다. 당신이 정말로 표준 뛰어해야하는 경우

내가 제안 할 수 있습니다 당신은 할 수 있습니다 :

  1. 읽고이 주석 원하는 출력을 생성 일부 프로세서를 구축 할 수 있습니다.
  2. 문서를 문자열로 수동 작성하고 요청시 본문으로 게시하십시오.

우선 액세스하려는 엔드 포인트가 실제로 더 엄격한 솔루션을 사용하기 전에 비준수 XML을 사용하는 것이 좋습니다.