So:
some_node = doc.find('/foo') child = some_node.children while child ... do stuff child = child.next endThere is also a bit of ruby syntactic sugar that defines an each method, so you can do:
some_node = doc.find('/foo') some_node.children.each do |node| ... do stuff endThus node.children is a XML::Node that acts both as a single node and also a collection. The same is true for attributes.
For anyone who works with the DOM's built into browsers, or follows the W3C standards (\http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html), this is a bit weird and non-intuitive.
I'd prefer that node.children becomes node.first and node.children returns an array of child nodes. We'd then add an each_child method to XML::Node (based on node.first and node.next) for quick and easy iteration.
some_node = doc.find('/foo') child_nodes = some_node.children child_nodes.class == "Array" some_node.each_child do |node| ... do stuff end And for attributes, I vote that libxml copies REXML's interface: http://www.germane-software.com/software/rexml/doc/classes/REXML/Attributes.html Thoughts? Charlie
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ libxml-devel mailing list libxml-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/libxml-devel