2016-05-23 124 views
-1

我正在使用Nokogiri来解析外部XML文档。一个我处理的文件包含已使用HTML编码,此外不正确编码的URL不是内CDATA标签:Nokogiri解析编码的URL字符串

的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! 
+0

当我尝试重现此操作时,会看到包含的&符号。你能包含你的实际代码吗? – matt

+0

谢谢@matt我更新,希望能够多点点光芒。 – cman77

+1

您的代码没有显示问题。请阅读“[mcve]”。 –

回答

0

你的问题并不能充分证明你有,但采取了猜测的问题,它看起来像你不使用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是什么,具有实体解码之后。如果你需要编码,那么在使用它们之前重新编码它们。