2016-05-23 103 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是什麼,具有實體解碼之後。如果你需要編碼,那麼在使用它們之前重新編碼它們。