class Nokogiri::XML::Document
Public Instance Methods
Source
# File lib/xml/smart.rb, line 31 def basepath=(path) @basepath = File.dirname(path.to_s) end
Source
# File lib/xml/smart.rb, line 71 def custom_namespace_prefixes @custom_namespace_prefixes ||= nil @custom_namespace_prefixes || custom_namespace_prefixes_update end
Source
# File lib/xml/smart.rb, line 47 def custom_namespace_prefixes_update result = {} nsall = {} nsde = {} self.xpath('//namespace::*').each do |n| unless n.prefix == 'xml' nsde[n.href] = n.prefix if n.prefix.nil? nsall[n.href] = n.prefix end end count = -1 nsall.each do |k,v| if v.nil? && nsde.length == 1 result['xmlns'] = k elsif v.nil? && nsde.length > 1 result["xmlns#{count+=1}"] = k else result[v] = k end end @custom_namespace_prefixes = result end
Source
# File lib/xml/smart.rb, line 25 def ns_update @ns_counter ||= 1 @ns_counter += 1 self end
Source
# File lib/xml/smart.rb, line 75 def user_custom_namespace_prefixes @user_custom_namespace_prefixes ||= {} end
Source
# File lib/xml/smart.rb, line 78 def user_custom_namespace_prefixes=(h) @user_custom_namespace_prefixes = h end
Source
# File lib/xml/smart.rb, line 38 def xpath_fast(path) #@ctx = XPathContext.new(self) unless defined? @ctx #ctx = @ctx ctx = XPathContext.new(self) ctx.register_namespaces(self.document.custom_namespace_prefixes.merge(self.document.user_custom_namespace_prefixes)) path = path.gsub(/xmlns:/, ' :') unless Nokogiri.uses_libxml? ctx.evaluate(path) end