【问题标题】:Trying to output information from xml api using nokogiri尝试使用 nokogiri 从 xml api 输出信息
【发布时间】:2019-05-06 06:51:25
【问题描述】:

我正在尝试将信息输出到从大学项目的 XML 传输 api 获取的网页。我正在使用 ruby​​ on rails 和 nokogiri gem。我可以接收信息,但是当我尝试在结果页面上输出它时,它只是空白。

以下获取api信息的方法在相关的rails控制器文件中。

def results
require 'nokogiri'

@doc = Nokogiri::XML(open("http://api.irishrail.ie/realtime/realtime.asmx/getAllStationsXML"))
end

我可以看到正在将 xml 信息传递给视图。当我只是将<%= @doc %> 放在视图中时,它会导致 xml 格式的信息在页面上打印出来。

但是,我显然需要正确格式化它。我在视图中有以下代码,并且还尝试将其放入控制器方法中(减去 符号),但它似乎不起作用。

<% @doc.xpath('//StationId').each do |station_element| %>

<%= station_element.text %>

<% end %>

这就是 XML 数据的样子:

<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfObjStation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://api.irishrail.ie/realtime/">
  <objStation>
    <StationDesc>Belfast Central</StationDesc>
    <StationAlias />
    <StationLatitude>54.6123</StationLatitude>
    <StationLongitude>-5.91744</StationLongitude>
    <StationCode>BFSTC</StationCode>
    <StationId>228</StationId>
  </objStation>
  <objStation>
    <StationDesc>Lisburn</StationDesc>
    <StationAlias />
    <StationLatitude>54.514</StationLatitude>
    <StationLongitude>-6.04327</StationLongitude>
    <StationCode>LBURN</StationCode>
    <StationId>238</StationId>
  </objStation>
</ArrayOfObjStation>

如果有人能指出我需要什么代码来打印出 xml 数据的某些部分,我将不胜感激,谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby xml api nokogiri


    【解决方案1】:

    您在 http://api.irishrail.ie/realtime/realtime.asmx/getAllStationsXML 的 XML 有 namespace 我修改了 xml 以反映 API 返回的内容

    您需要在 xpath 表示法中使用命名空间前缀才能使其工作。

    @doc.xpath('//StationId') 替换为@doc.xpath('//xmlns:StationId') 以修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2020-09-26
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多