当前位置: 首页 > 面试题库 >

如何在AngularJS中处理XML服务?

楚畅
2023-03-14
问题内容

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

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

我该如何处理XML?我看到四个选项:

  1. 解析它,然后将DOM对象直接传递到UI(view)。

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

  3. 在客户端使用某些库将DOM对象转换为JSON,并在发出发布/放置请求时将其转换回。

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

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


问题答案:

如果选项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之间的即用型转换器提供的解决方案(例如,冗余对象包含,带编号的文本属性,以表示与元素混合的不相交的文本)
,那么这可能对您来说不是问题。否则,有必要在请求的两端强制定制转换行为(尽管据我所知,遗憾的是没有声明性的)。



 类似资料:
  • 问题内容: 我正在向我的API发出请求,并且正在使用AngularJS $ resource模块。它与$ http不同,因此我不知道如何处理错误。 我的服务: 我的控制器: 我想要类似这样的东西..如果我的API无法正常工作,我不知道如何处理错误。 问题答案: 您可以将错误处理程序作为第二个参数传递给。 编辑: 为了使事情更清楚一些,例如:

  • 问题内容: AngularJS依赖于启用的JavaScript。这意味着,如果有人访问用AngularJS内置的应用程序或网站,它将无法正确呈现。 使用AngularJS时,用于处理禁用了JavaScript的访客的常用约定是什么? 请解释为什么会这样? 问题包括处理有角度的JS指令和{{data_bindings}}。这样,当页面无法呈现页面时,数据就不会显示。 问题答案: 在考虑了该问题的其他

  • 我是web服务新手,正在阅读Martin Kalin的《Java Webservices》一书。我已经了解了它最初的基本概念,有一个问题: 假设将HTTP请求(包含SOAP消息信封)发送到JavaWeb服务()。该请求是否由Servlet内部处理,Servlet提取SOAP消息并将其转换为相应Java域对象,然后调用服务实现bean? 无论Metro和Axis等现成框架如何,这个问题都是通用的。只

  • 问题内容: 你们中 有谁 知道如何在 AngularJS中 很好地处理锚点哈希链接吗? 我为简单的常见问题解答页面添加了以下标记 单击上面的任何链接时,AngularJS会拦截并将我路由到一个完全不同的页面(在我的情况下是404页,因为没有路由与这些链接匹配。) 我的第一个想法是创建一个匹配“ / faq /:chapter ” 的路由,并在相应的控制器中检查匹配的元素之后,然后使用jQuery向

  • 问题内容: 如何解析HTML / XML并从中提取信息? 问题答案: 本机XML扩展 我更喜欢使用本机XML扩展之一,因为它们与PHP捆绑在一起,通常比所有第3方库都快,并为我提供了所需的所有标记控制权。 DOM DOM扩展使您可以通过带有PHP 5的DOM API通过XML文档进行操作。它是W3C的Document Object Model Core Level 3的实现,它是一种平台和语言无关

  • 问题内容: 当我使用jQuery执行DOM操作(添加新HTML)时,AngularJS不会自动检测新HTML中的变量并将其替换为它们的值。例如: 这是一个简单的例子,但在元素更改HTML(此功能被称为后),输出它仍然不是什么 行 应该在上下文/范围的意思。 问题答案: 您必须注入(http://docs.angularjs.org/api/ng.$compile)并使用它,以便对新html 有所了