如何知道何时使用 XML 解析器以及何时使用 ActiveResource?

2024-04-29

我尝试使用 ActiveResource 来解析更像 HTML 文档的 Web 服务,但一直收到 404 错误。

我是否需要使用 XML 解析器来完成此任务而不是 ActiveResource?

我的猜测是,只有当您使用来自另一个 Rails 应用程序的数据并且 XML 数据可以轻松转换为 Rails 模型时,ActiveResource 才有用。例如,如果 Web 服务是更广泛的 XML(如 HTML 文档或 RSS 提要),则您需要使用 hpricot 或 nokogiri 等解析器。它是否正确?

如何知道何时使用 XML 解析器以及何时使用 ActiveResource?


Update:ActiveResource 也不是 XML 解析器。它是一个 REST 使用者,允许您与远程资源进行交互,类似于 ActiveRecord 模型的方式。它确实在底层使用了 XML 解析器(我假设通过下面显示的 ActiveSupport 的 XmlMini)。

ActiveResource 对 XML 内容的结构有一些严格的要求,并且在与另一个 Rails 应用程序的 REST API 交互时效果最佳。它的目的不是对 HTML 页面进行通用屏幕抓取。为此,请直接使用 Nokogiri。


ActiveSupport 不是一个 XML 解析器,它是有用的 Ruby 方法和类的各种集合。然而,它确实提供了许多不同 XML 解析器的包装器,为您提供了一致的接口。

您可以查看正在使用哪个 XML 解析器并切换到不同的 XML 解析器。试试这个script/console.

ActiveSupport::XmlMini.backend # => ActiveSupport::XmlMini_REXML
ActiveSupport::XmlMini.backend = 'Nokogiri'
ActiveSupport::XmlMini.backend # => ActiveSupport::XmlMini_Nokogiri
# it will now use Nokogiri

然而,这仍将使用 Nokogiri 中的 XML 解析器,该解析器假定严格、有效的标记。大多数 HTML 页面不符合这一严格要求,因此最好直接使用 Nokogiri 的 HTML 解析器,而不是通过 ActiveSupport。

doc = Nokogiri::HTML(...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何知道何时使用 XML 解析器以及何时使用 ActiveResource? 的相关文章

  • 如何在rails中使用npm包?

    我正在尝试使用王牌编辑 https github com ajaxorg ace在我的 Ruby on Rails 应用程序中 大部分视图由 React 组件组成 我正在使用反应轨道宝石 https github com reactjs r
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • 如何让WebClient(Web服务客户端)自动使用默认代理服务器?

    我正在从 WinForms 应用程序调用 Web 服务 当不使用代理服务器时 一切工作正常 但是当使用代理时 应用程序会崩溃 因为它收到的不是它期望的 SOAP 请求的 XML 响应 而是一个 HTML 错误页面 显示 需要身份验证 看来你
  • Rails 3:使用 Simple_form 如何创建一个向specialities#create 发布帖子的表单?

    如何使用 Simple form 创建一个向specialities create 发布帖子的表单 我试过这个
  • 在 CircleCI 中设置 Elasticsearch 和 Ruby on Rails

    我正在尝试在 Rails 应用程序中使用 Elasticsearch 设置 CircleCI 我想已经配置了镜像 但是如何在 CI 中连接到它 到目前为止我已经尝试过 https github com elastic elasticsear
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • 当会话令牌无效时,我应该使用什么状态代码?

    创建 Web 服务 RESTful 时 当会话令牌无效时我应该使用什么状态代码 目前我公司的人给我发了一个404 未找到 但我认为这是不正确的 因为资源存在 也许我应该使用 401 Unauthorized 你怎么认为 您建议我在这种情况下
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • 有时您可能需要重新启动 Webrick 才能看到所做的更改,这是否正确?

    我听 Kevin Skoglund lynda com 说 养成在开发过程中频繁重新启动 Webrick 的习惯是一个很好的习惯 虽然通常您不需要重新启动 Webrick 来查看更改 但他暗示在某些特殊情况下可能需要这样做 有谁知道这些情况
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • Rails 5:验证复选框的接受

    我有一个带有一些嵌套字段的注册表单 在该表单中我添加了一个服务条款的复选框 我正在尝试验证复选框何时被选中 如果没有 则返回错误 validates acceptance of agreement allow nil gt true acc
  • Rails - 安装 Spree 时出现问题

    我在 Rails 应用程序中安装 Spree 时遇到问题 当我运行 gem spree 时 按照说明http spreecommerce com documentation getting started html http spreeco
  • 创建一个默认为零的工厂关联?

    在factories rb 文件中使用FactoryGirl gem 如何创建一个关联默认为nil 的工厂 我正在思考以下几点 Factory define user do factory factory association post
  • 在rails生成脚手架中跳过JSON格式

    当您使用类似命令生成 Rails 脚手架时rails g scaffold Thing有什么办法可以避免变得烦人吗 respond to do format format html index html erb format json re
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • Rails 3 SSL 路由从 https 重定向到 http

    这个问题与此相关SO 问答 rails 3 ssl deprecation https stackoverflow com questions 3634100 rails 3 ssl deprecation建议使用routes rb和类似的

随机推荐

  • Spring MVC 配置启用

    我正在从头开始建立一个项目 目前我正在配置Spring MVC 4 1 5使用java配置 整个应用程序正在 tomcat gradle 插件上运行 有人可以解释一下为什么我需要对班级进行以下调用DefaultServletHandlerC
  • 作为依赖项和不同的 publicKeyToken 共享时 RestSharp 错误

    使用来自的 APIDocusign Twilio and Auth0 全部 3 个都有RestSharp dll作为依赖 如果我使用RestSharp dll包含在Docusign包裹 Docusign效果很好但是Auth0 and Twi
  • 在 docker build 中缓存“go get”

    我想将 golang 单元测试封装在 docker compose 脚本中 因为它依赖于多个外部服务 我的应用程序有很多依赖项 因此需要一段时间go get 如何以允许构建 docker 容器的方式缓存包 而无需每次要测试时下载所有依赖项
  • 如何在 gitlab-ci 作业之间传递变量?

    我有一个像这样的 gitlab ci stages calculation execution calculation job stage calculation script calculate something and output
  • 如何使用 mongoTemplate 实现 Mongodb Collection 的分页

    我是 mongoDb 中的菜鸟 我需要为任何特定集合实现分页 例如说 我有一个 Foo 集合 并且有一个返回 Foo 集合中所有记录的函数 public List
  • Button.setImage(nil, for: .normal) 在 iOS 15 中不起作用

    我试图在 Swift 中制作一个简单的井字棋应用程序 所以我设置了 9 个带有从 1 到 9 标签的按钮并调用setImage设置圆圈和十字 这正在按预期工作 当尝试重置主板时出现问题 我将这段代码称为 for i in 1 lt 10 i
  • 如何安全地存储 Discord(OAuth2) 用户的访问令牌?

    我正在努力寻找一种安全保存访问令牌的方法 我的 Web 应用程序在用户授权应用程序后从 DiscordAPI 检索到该访问令牌 我正在为 Discord 机器人创建一个网络界面 重要的是 不是每个人都可以使用它 仅应允许特定 Discord
  • 在牌手中查找匹配项的结果在大约 10% 的情况下略有偏差

    这是我的代码 它应该比较数组 arrHands 中的值 该数组将 x 张牌 x cardsDrawn 存储为单打 其中整数部分是花色 1 到 4 小数部分代表牌号 01 1 A 等 然而 大约十分之一的运行次数会返回相差一两对的值 我知道当
  • Curl 错误:最多 (20) 个重定向

    尝试 CURL 到 myntra 时出现错误 我试图通过 DOMDOCUMENT 获取提取详细信息 但它给出了相同的错误 最多 20 个重定向 这是我的代码
  • 在 Django 中处理 subprocess.call()

    我正在开发的应用程序的简单想法是用户给出 Linux 命令 Linux 命令的结果将显示在网络浏览器中 这是我的观点 py from django shortcuts import render to response from djang
  • pip 中的新彩色终端进度条

    我发现新版本的pip Python的包安装程序 有一个彩色进度条来显示下载进度 我怎样才能做到这一点 Like this pip 本身正在使用rich https pypi org project rich 包裹 特别是 他们的进度条文档
  • 选择不同的字段和行号只是为了显示 ID 号会产生重复的数据

    我有一个表应用程序 它有 10 列 类别是一列 并且该列有重复值 为了获得不同的值 我有一个查询 SELECT distinct CATEGORY as CategoryName FROM APPLICATION where applica
  • java中数字字符串间隔排序

    我正在与一些人一起上一个人课 其中有姓名 年龄范围等详细信息 年龄区间为 0 5 6 10 11 30 31 45 46 50 50 100 100 110 我正在上 Person 课name ageBand字符串间隔及其参数化构造函数 g
  • REST Web 服务和 API 密钥

    我有一个网络服务 可供用户访问我的应用程序数据库并获取一些信息 用户必须注册 API 密钥并在提出请求时提供该密钥 一切正常 但我如何检查注册密钥的用户是否确实发出请求 而不是他可能已向其提供密钥的其他人 这两天我一直在思考解决方案 但目前
  • 如何让服务器监听多个端口

    我想用同一台服务器监听 100 个不同的 TCP 端口 这是我目前正在做的事情 import socket import select def main server socket socket socket socket AF INET
  • __attribute__ ((已弃用)) 不适用于 Objective-C 协议方法?

    我需要弃用 Objective C 协议中的单个方法 在普通的类 实例方法上我添加 attribute deprecated 声明后 看来它不适用于协议方法 如果我将它们标记为已弃用并在某个地方使用它们 则项目编译正常 不会出现预期的弃用警
  • if ["$i" -gt "$count"];出现错误

    我试图将 f count f 1 f 2 名称放入数组中 下面是代码 echo Enter the count read count echo count arr i 1 while true do if i gt count then e
  • 在Matlab中使用中心切片定理实现滤波反投影算法

    我正在研究一种使用中心切片定理的滤波反投影算法作为家庭作业 虽然我理解纸上的理论 但在 Matlab 中实现它时遇到了问题 我得到了一个可以遵循的框架 但我认为我可能误解了一个步骤 这是我所拥有的 function img sampleFB
  • RSpec 请求 - 如何为所有请求设置 http 授权标头

    我正在使用 rspec 请求来测试 JSON API 该 API 需要在每个请求的标头中包含 api key 我知道我可以这样做 get v1 users janedoe json HTTP AUTHORIZATION gt Token t
  • 如何知道何时使用 XML 解析器以及何时使用 ActiveResource?

    我尝试使用 ActiveResource 来解析更像 HTML 文档的 Web 服务 但一直收到 404 错误 我是否需要使用 XML 解析器来完成此任务而不是 ActiveResource 我的猜测是 只有当您使用来自另一个 Rails