如何在AngularJS中处理XML服务?

Nic*_*ras 52 xml service backend angularjs

我的公司拥有数千个现有的xml Web服务,并开始为新项目采用AngularJs.

http://angularjs.org/上的教程专门使用json服务.看起来它们在控制器中进行服务调用,解析生成的JSON,并将生成的对象直接传递给视图.

我该怎么处理XML?我看到四个选项:

  1. 解析它并将DOM对象直接传递给UI(视图).

  2. 在服务器端围绕我的XML服务放置一个JSON包装器.

  3. 使用客户端的某个库将DOM对象转换为JSON,并在发出post/put请求时将其转换回来.

  4. 在客户端手动将DOM对象转换为JavaScript对象.

什么是正确的方法,为什么?

Jol*_*hic 34

如果选项2对您来说相对容易(例如,在后端控制器中添加单行JSON转换),那么这可能是一项很好的投资,因为JSON通过线路更精简,而在客户端的工作则更少并且通常由RESTful API消费者首选(如果有其他消费者).

在最近做过这种工作之后,我会说下一个最好的路径(如果选项2很难)将使用响应并请求变换器来执行XML和JavaScript对象之间的转换,这是您的选项之间的某种变化3 4. DOMParser对象是本机代码,因此它可以快速解析XML.将XML DOM转换为JavaScript对象并从JavaScript对象生成XML都是相当简单的递归算法.这种方法将所有其余的客户端代码与后端表示分离,如果选择1,则不会出现这种情况.这种解耦将允许您直接使用基于JSON的RESTful接口,如果出现这样的机会.

选择涉及JSON/JavaScript对象的任何选项通常涉及处理阻抗不匹配问题,如XML属性,XML集合与JS数组和XML混合内容表示.如果您的数据模型足够简单,或者您不介意使用XML和JSON之间的开箱即用变换器提供的解决方案(例如,冗余对象包含,编号文本属性表示与元素混合的不相交文本)那么这对你来说可能不是问题.否则,就有必要在请求的任何一端定制转换行为(尽管可悲的是没有声明,据我所见).


Abi*_*ash 16

我建议你有一个xml到json转换器.这是一个.

https://code.google.com/p/jquery-xml2json-plugin/

转换后,您有一个普通的JS对象,您可以使用普通的角度指令来解​​析它们并根据需要使用它们.


joh*_*ght 16

我有同样的问题.结束制作一个小模块,将我的所有XML响应转换为ng.element对象.

https://github.com/johngeorgewright/angular-xml


Mic*_*she 11

我发现x2js工作得很好:https://code.google.com/p/x2js/

客户端接受XML,不需要处理角度服务.一个简单的快速转换,瞧,你有一个模仿XML文档的JSON API.似乎要照顾我遇到的所有用例.