golang通过反射来marshal和unmarshal来处理xml。但涉及到具体应用,碰到个问题,例如有这样的协议定义:
<Msg>
<Type>Rsp</Type>
<SN>123456</SN>
<Rsp>
<!-- 这里是各个响应的协议内容 -->
</Rsp>
</Msg>
如果是请求的话,把上述的Rsp换成Req即可。
如果是unmarshal是好办的,定义一个Message struct,把Req和Rsp的struct放入其中,那么unmarshal后,可以根据不同的type,取不同的成员。
但是marshal就不同了,填了req的content,rsp也会被marshal出来。
有什么好办法吗?就是marshal和unmarshal是针对具体的struct来的,但是协议是"变化"的。
<Msg>
<Type>Rsp</Type>
<SN>123456</SN>
<Rsp>
<!-- 这里是各个响应的协议内容 -->
</Rsp>
</Msg>
如果是请求的话,把上述的Rsp换成Req即可。
如果是unmarshal是好办的,定义一个Message struct,把Req和Rsp的struct放入其中,那么unmarshal后,可以根据不同的type,取不同的成员。
但是marshal就不同了,填了req的content,rsp也会被marshal出来。
有什么好办法吗?就是marshal和unmarshal是针对具体的struct来的,但是协议是"变化"的。