private static Map < String , List < Node > > getChildNodes ( Node parent ) { if ( parent == null ) return Collections . emptyMap ( ) ; Map < String , List < Node > > children = new HashMap < String , List < Node > > ( ) ; NodeList nodes = parent . getChildNodes ( ) ; int nNodes = nodes . getLength ( ) ; for ( int i = 0 ; i < nNodes ; i ++ ) { Node node = nodes . item ( i ) ; if ( node . getNodeType ( ) != Node . ELEMENT_NODE ) continue ; String name = node . getNodeName ( ) ; List < Node > namesakes = children . get ( name ) ; if ( namesakes == null ) { namesakes = new ArrayList < Node > ( ) ; children . put ( name , namesakes ) ; } namesakes . add ( node ) ; } return children ; }
Utility method to group child nodes by their names .