我的公司有数千个现有的xml服务,并开始在新项目中采用AngularJs。
http://angularjs.org/的教程专门使用json服务。看起来它们在控制器中进行服务调用,解析生成的JSON,并将生成的对象直接传递给视图。
我该如何处理XML?我看到了四个选择:
服务进行了JSON包装。
正确的方法是什么?为什么?
发布于 2013-03-19 13:39:59
如果选项2对您来说相对容易(例如,像在后端控制器中添加一行JSON转换),那么它可能是一项不错的投资,因为JSON在线路上更精简,客户端上的工作要少得多,而且通常是RESTful应用编程接口使用者的首选(以防有其他使用者)。
最近完成了这类工作,我想说下一个最好的方法(如果选项2比较困难)是使用response和request transformers来执行XML和JavaScript对象之间的转换,这是选项3和选项4之间的一个变体。DOMParser对象是原生代码,所以它解析XML的速度很快。将XML转换为JavaScript对象和从JavaScript对象生成XML都是非常简单的递归算法。这种方法将所有剩余的客户端代码从后端表示中解耦出来,如果您选择了选项1,情况就不同了。如果出现这样的机会,这种解耦将允许您直接使用基于JSON的RESTful接口。
选择涉及JSON/JavaScript对象的任何选项通常涉及处理阻抗不匹配问题,如XML属性、XML集合与JS数组和XML混合内容表示。如果您的数据模型足够简单,或者您不介意接受由XML和JSON之间的开箱即用的转换器提供的解决方案(例如,冗余的对象包含、表示与元素混合的不相交文本的编号文本属性),那么这对您来说可能不是问题。否则,在请求的两端都有必要定制转换行为的机会(尽管遗憾的是,据我所见,不是以声明的方式)。
发布于 2013-03-19 18:15:50
我建议您使用一个从xml到json的转换器。这里有一个。
https://code.google.com/p/jquery-xml2json-plugin/
转换之后,您就拥有了一个普通的JS对象,您可以在其中使用普通的angular指令来解析它们,并根据需要使用它们。
发布于 2013-05-04 06:52:44
我也有同样的问题。最后我做了一个小模块,把我所有的XML响应都转换成一个ng.element对象。
https://stackoverflow.com/questions/15490658
复制相似问题