我正在使用Nokogiri来解析外部XML文档。 我正在处理的一个文件包含使用 HTML 编码错误编码的 URL,此外不在CDATA
标记中:
XML 节点如下所示:
<JobUrl>https://chk.tbe.taleo.net/chk01/ats/careers/requisition.jsp?org=JUSTENERGY&cws=1&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&cws=1&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。如果需要对它们进行编码,请在使用它们之前对其进行重新编码。