I've written some simple routines to walk an XML ontology with xml/
libxml, and noticed that putting XML::Node objects into lists and
returning them may lead to a situation where two lists contain the
same node with different object_id's. Here's an exmple, funstion
ancestors:
require 'xml/libxml'
# extend XML::Node with helper methods
class XML::Node
def ancestors(node_type=nil)
#print "=>"
res = []
p = self
while p = p.parent and p.name do
next if node_type and p.name != node_type
res << p if p
#puts "added #{p.name}"
end
res.reverse
end
# ... -- more methods
end
Now I found that if I call it on some tree and get at least two
nodes, and then compare the first elements of each list, which should
be the root in both cases, I get different object_id's. But ==
returns equality. What's going on here? Hpricot used to maintain
the same object_id across assignments, which is usually the case in
Ruby... Are there any think objects created for XML::Node's here?
Cheers,
Alexy
_______________________________________________
libxml-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/libxml-devel