Nokogiri 解析编码的 URL 字符串



我正在使用Nokogiri来解析外部XML文档。 我正在处理的一个文件包含使用 HTML 编码错误编码的 URL,此外不在CDATA标记中:

XML 节点如下所示:

<JobUrl>https://chk.tbe.taleo.net/chk01/ats/careers/requisition.jsp?org=JUSTENERGY&amp;cws=1&amp;rid=2621</JobUrl>

当Nokogiri解析文档时,结果是:

#<Nokogiri::XML::Element:0x3fdbd79a4384 name="JobUrl" children=[#<Nokogiri::XML::Text:0x3fdbd79a1fa8 "https://chk.tbe.taleo.net/chk01/ats/careers/requisition.jsp?org=JUSTENERGYcws=1rid=2482">]>

请注意缺少的"&"。

Nokogiri有没有办法将其正确翻译成

https://chk.tbe.taleo.net/chk01/ats/careers/requisition.jsp?org=JUSTENERGY&cws=1&rid=2621

还是需要要求文档维护者删除编码并使用 CDATA 标签?

我正在使用OpenURI来拉取完整的XML文档:

require 'nokogiri'
require 'open-uri'    
doc = Nokogiri::XML(open(url)).remove_namespaces!

您的问题不能充分证明您遇到的问题,但猜测一下,您似乎没有正确使用Nokogiri。考虑一下这段代码,这是我开始的地方:

require 'nokogiri'
doc = Nokogiri::XML('<JobUrl>https://foo.bar/file.jsp?org=JE&amp;cws=1&amp;rid=2621</JobUrl>')
doc.at('JobUrl').text
# => "https://foo.bar/file.jsp?org=JE&cws=1&rid=2621"
doc.at('JobUrl').content
# => "https://foo.bar/file.jsp?org=JE&cws=1&rid=2621"

在解码实体后,生成的文本似乎是正确的 URL。如果需要对它们进行编码,请在使用它们之前对其进行重新编码。

最新更新