class Nokogiri::XML::Document

Public Instance Methods

basepath() click to toggle source
# File lib/xml/smart.rb, line 34
def basepath
  @basepath || ''
end
basepath=(path) click to toggle source
# File lib/xml/smart.rb, line 31
def basepath=(path)
  @basepath = File.dirname(path.to_s)
end
custom_namespace_prefixes() click to toggle source
# File lib/xml/smart.rb, line 71
def custom_namespace_prefixes
  @custom_namespace_prefixes ||= nil
  @custom_namespace_prefixes || custom_namespace_prefixes_update
end
custom_namespace_prefixes_update() click to toggle 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
ns_counter() click to toggle source
# File lib/xml/smart.rb, line 22
def ns_counter
  @ns_counter ||= 1
end
ns_update() click to toggle source
# File lib/xml/smart.rb, line 25
def ns_update
  @ns_counter ||= 1
  @ns_counter += 1
  self
end
user_custom_namespace_prefixes() click to toggle source
# File lib/xml/smart.rb, line 75
def user_custom_namespace_prefixes
  @user_custom_namespace_prefixes ||= {}
end
user_custom_namespace_prefixes=(h) click to toggle source
# File lib/xml/smart.rb, line 78
def user_custom_namespace_prefixes=(h)
  @user_custom_namespace_prefixes = h
end
xpath_fast(path) click to toggle 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