Method: REXML::Attributes#delete
- Defined in:
- lib/rexml/element.rb
#delete(attribute) ⇒ Object
:call-seq:
delete(name) -> element
delete(attribute) -> element
Removes a specified attribute if it exists; returns the attributes’ element.
When string argument name is given, removes the attribute of that name if it exists:
xml_string = " <root xmlns:foo=\"http://foo\" xmlns:bar=\"http://bar\">\n <ele foo:att='1' bar:att='2' att='<'/>\n </root>\n"
d = REXML::Document.new(xml_string)
ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='<'/>
attrs = ele.attributes
attrs.delete('foo:att') # => <ele bar:att='2' att='<'/>
attrs.delete('foo:att') # => <ele bar:att='2' att='<'/>
When attribute argument attribute is given, removes that attribute if it exists:
attr = REXML::Attribute.new('bar:att', '2')
attrs.delete(attr) # => <ele att='<'/> # => <ele att='<'/>
attrs.delete(attr) # => <ele att='<'/> # => <ele/>
2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 |
# File 'lib/rexml/element.rb', line 2471 def delete( attribute ) name = nil prefix = nil if attribute.kind_of? Attribute name = attribute.name prefix = attribute.prefix else attribute =~ Namespace::NAMESPLIT prefix, name = $1, $2 prefix = '' unless prefix end old = fetch(name, nil) if old.kind_of? Hash # the supplied attribute is one of many old.delete(prefix) if old.size == 1 repl = nil old.each_value{|v| repl = v} store name, repl end elsif old # the supplied attribute is a top-level one super(name) end @element end |