我正在使用Nokogiri来解析外部XML文档。我正在处理的其中一个文件包含使用HTML编码错误编码的网址,此外不在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">]>
请注意缺少的“&amp;”。
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!
答案 0 :(得分:0)
您的问题没有充分证明您遇到的问题,但猜测一下,您似乎没有正确使用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。如果您需要对它们进行编码,请在使用它们之前对其进行重新编码。