# File lib/xml/dom/digest.rb, line 76
      def getDigest(algorithm = Digest::MD5, force = false)
        return @digest if (!force && @digest)
        attr = attributes
        children = childNodes
        attr_digests = ""
        children_digests = ""
        if attr
          attr_array = attr.sort {|a, b|
            DOM.tou16(a.nodeName) <=> DOM.tou16(b.nodeName)}
          attr_array.each {|a|
            attr_digests << a.getDigest(algorithm, force)
          }
        end
        children_num = 0
        children.each {|c|
          next if c.nodeType == COMMENT_NODE
          children_num += 1
          children_digests << c.getDigest(algorithm, force)
        }
        @digest = algorithm.digest([ELEMENT_NODE].pack("N") +
                                   DOM.tou16(nodeName) +
                                   "\0\0" +
                                   [attr.length].pack("N") +
                                   attr_digests +
                                   [children_num].pack("N") +
                                   children_digests)
      end