尝试使用 nokogiri 从 xml api 输出信息
Trying to output information from xml api using nokogiri
我正在尝试将信息输出到从大学项目的 XML 传输 api 中获取的网页。我在 rails 和 nokogiri gem 上使用 ruby。我可以接收信息,但是当我尝试在结果页面上输出它时,它只是空白。
下面获取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 数据的某些部分,我将不胜感激。
您在 http://api.irishrail.ie/realtime/realtime.asmx/getAllStationsXML has namespace 的 XML(我修改了 xml 以反映 API 返回的内容)
您需要在 xpath 表示法中使用命名空间前缀才能使其正常工作。
将 @doc.xpath('//StationId')
替换为 @doc.xpath('//xmlns:StationId')
以修复它。
我正在尝试将信息输出到从大学项目的 XML 传输 api 中获取的网页。我在 rails 和 nokogiri gem 上使用 ruby。我可以接收信息,但是当我尝试在结果页面上输出它时,它只是空白。
下面获取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 数据的某些部分,我将不胜感激。
您在 http://api.irishrail.ie/realtime/realtime.asmx/getAllStationsXML has namespace 的 XML(我修改了 xml 以反映 API 返回的内容)
您需要在 xpath 表示法中使用命名空间前缀才能使其正常工作。
将 @doc.xpath('//StationId')
替换为 @doc.xpath('//xmlns:StationId')
以修复它。