模块 REXML::Namespace

向对象添加命名属性。

常量

NAMESPLIT
NAME_WITHOUT_NAMESPACE

属性

expanded_name[R]

对象的名称,如果已设置则有效

local_name[R]

对象的名称,如果已设置则有效

name[R]

对象的名称,如果已设置则有效

prefix[RW]

对象的展开名称,如果已设置名称则有效

公共实例方法

fully_expanded_name() 点击切换源代码

完全展开名称,即使前缀未在源文件中指定。

# File rexml-3.4.0/lib/rexml/namespace.rb, line 57
def fully_expanded_name
  ns = prefix
  return "#{ns}:#@name" if ns.size > 0
  return @name
end
has_name?( other, ns=nil ) 点击切换源代码

比较名称,可以选择包含命名空间

# File rexml-3.4.0/lib/rexml/namespace.rb, line 43
def has_name?( other, ns=nil )
  if ns
    return (namespace() == ns and name() == other)
  elsif other.include? ":"
    return fully_expanded_name == other
  else
    return name == other
  end
end
name=( name ) 点击切换源代码

设置名称和展开名称

# File rexml-3.4.0/lib/rexml/namespace.rb, line 17
def name=( name )
  @expanded_name = name
  if name.match?(NAME_WITHOUT_NAMESPACE)
    @prefix = ""
    @namespace = ""
    @name = name
  elsif name =~ NAMESPLIT
    if $1
      @prefix = $1
    else
      @prefix = ""
      @namespace = ""
    end
    @name = $2
  elsif name == ""
    @prefix = nil
    @namespace = nil
    @name = nil
  else
    message = "name must be \#{PREFIX}:\#{LOCAL_NAME} or \#{LOCAL_NAME}: "
    message += "<#{name.inspect}>"
    raise ArgumentError, message
  end
end