Sha256: 2fecd5140cc6c1f4644db9670244ddbb5c2b5240cf68def888f045c553f69f0c

Contents?: true

Size: 1.93 KB

Versions: 4

Compression:

Stored size: 1.93 KB

Contents

#:invisible:
$:.unshift "../lib" #<=
#:visible:
require 'xml/xxpath'

d=REXML::Document.new <<EOS
  <foo>
    <bar>
      <baz key="work">Java</baz>
      <baz key="play">Ruby</baz>
    </bar>
  </foo>
EOS


rootelt=d.root

#:invisible_retval:
path1=XML::XXPath.new("/bar/baz[@key='work']")

#:visible_retval:
path1.create_new(rootelt)#<=
#:invisible_retval:
d.write($stdout,2)#<=
### a new element is created for *each* path element, regardless of
### what existed before. So a new "bar" element was added, with a new
### "baz" element inside it

### same call again...
#:visible_retval:
path1.create_new(rootelt)#<=
#:invisible_retval:
d.write($stdout,2)#<=
### same procedure -- new elements added for each path element


#:visible_retval:
## get reference to 1st "baz" element
firstbazelt=XML::XXPath.new("/bar/baz").first(rootelt)#<=

#:invisible_retval:
path2=XML::XXPath.new("@key2")

#:visible_retval:
path2.create_new(firstbazelt)#<=
#:invisible_retval:
d.write($stdout,2)#<=
### ok, new attribute node added

### same call again...
#:visible_retval:
#:handle_exceptions:
path2.create_new(firstbazelt)#<=
#:no_exceptions:
### can't create that path anew again -- an element can't have more
### than one attribute with the same name

#:invisible_retval:
### the document hasn't changed
d.write($stdout,2)#<=



### create_new the same path as in the ensure_created example
#:visible_retval:
baz6elt=XML::XXPath.new("/bar/baz[6]").create_new(rootelt)#<=
#:invisible_retval:
d.write($stdout,2)#<=
### ok, new "bar" element and 6th "baz" element inside it created


#:visible_retval:
#:handle_exceptions:
XML::XXPath.new("baz[6]").create_new(baz6elt.parent)#<=
#:no_exceptions:
#:invisible_retval:
### yep, baz[6] already existed and thus couldn't be created once
### again

### but of course...
#:visible_retval:
XML::XXPath.new("/bar/baz[6]").create_new(rootelt)#<=
#:invisible_retval:
d.write($stdout,2)#<=
### this works because *all* path elements are newly created

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
xml-mapping-0.9.1 examples/xpath_create_new.intin.rb
pdf-labels-1.0.0 vendor/xml-mapping/examples/xpath_create_new.intin.rb
xml-mapping-0.8 examples/xpath_create_new.intin.rb
xml-mapping-0.8.1 examples/xpath_create_new.intin.rb