api response에 예전에는 xml만 사용했었다. 그러다 json이 유행하면서 둘다를 지원했고 지금은 대부분 json만 제공한다. 그럼에도 불구하고 xml을 제공하는 곳들이 있는데 관리가 잘 안되거나 오래전에 만들어진 후 변화가 없는 곳이 대부분이다. 내가 지금 사용하는 api, 티스토리 api도 xml이 기본값이다.
지금 api들은 데이터가 너무 중구난방이고 정리가 안되있어서 아마도 v2로 새롭게 제공을 하는게 나을 것 같기는 한데 일단 있는 것도 쓸만하게는 만들어둬야해서 이거저거 만지고 있는 중이다. 그러는 중에 같은 값을 xml, json 각각 어떻게 표현해야하는지를 정리해보려고 한다. 지금 생각으로는 group element, value element, list element 이렇게 나눌 수 있을 것 같다. (이 용어는 내가 내맘대로 부르는 것이다. 정식 명칭이 있다면 내가 무식해서 그런거니 이해 좀...)
Group element
group은 서로 다른 element들을 가지고 있는 element를 말한다.
json
group_name: {
child1: 1,
child2: 2
}
xml
<group_name>
<child1 />
<child2 />
</group_name>
List element
list는 같은 이름의 element들을 여러개 가지고 있는 element를 말한다.
json
list_name: [
value,
value2
]
xml
<list_name>
<child>value1</child>
<child>value2</child>
</list_name>
Value element
value는 값을 가진 element를 말한다. child는 없다.
json
value_name: value
xml
<value_name>value</value_name>
구현
json에서 list가 조금 규칙에 어긋나는데 value에 name이 없다. 그리고 xml은 group과 list에 큰 차이가 없다. 단지 child의 이름이 같으냐 다르냐의 차이다. 이런 부분들 때문에 어쩔 수 없이 실제로 사용할 때는 분기가 필요할 것 같다. php-response라는 이름의 프로젝트로 시작을 했고 곧 github에 코드를 공개할 수 있을 것 같다. 물론 이쁘게 성공했을때 말이다.
이 구현체는 아무리 생각해도 SimpleXMLElement와 차이가 없다. 단지 array-object 컨트롤을 위해서라면 presentation 단계에서 처리해주면 될 듯. 포기!