我公司有成千上万的现有xml Web服务,并开始采用AngularJs的新项目。
在http://angularjs.org/的教程使用json服务。看起来他们在控制器中进行服务调用,解析生成的JSON,并将生成的对象直接传递给视图。
我用XML做什么?我看到四个选项:
>解析它,并将DOM对象直接传递到UI(视图)。
>在服务器端的XML服务上放置一个JSON包装器。
>使用客户端上的一些库将DOM对象转换为JSON,并在我发出post / put请求时将其转换回。
>在客户端手动将DOM对象转换为JavaScript对象。
什么正确的方法和为什么?
如果选项2相对比较容易(例如,在后端控制器中添加一行JSON转换),那么这可能是一个很好的投资,因为JSON在线上比较简单,客户端上的工作少得多并且通常由RESTful API消费者(如果存在其他消费者)优选。
最近做了这样的工作,我会说,下一个最佳路径(如果选项2很难)将是使用响应和请求transformers执行您的XML和JavaScript对象之间的转换,这是一个变化之间的选项3和DOMParser对象是本地代码,所以它解析XML大大快。将XML DOM转换为JavaScript对象并从JavaScript对象生成XML是相当简单的递归算法。这种方法将所有其余的客户端代码与后端表示分离,如果您使用选项1,则不会出现这种情况。这种解耦将允许您直接使用基于JSON的RESTful接口,如果出现这样的机会。
选择涉及JSON / JavaScript对象的任何选项通常涉及处理阻抗不匹配问题,如XML属性,XML集合与JS数组和XML混合内容表示。如果您的数据模型足够简单,或者您不介意使用XML和JSON之间的开箱即用变换器提供的解决方案(例如,冗余对象遏制,编号的文本属性来表示与元素混合的不相交的文本) ,那么这可能不是你的问题。否则,有可能在请求的任一端定制转换行为(尽管可悲的是,没有声明性地,就我所见)。