package elte.java2_utikalauz5.xml; import javax.xml.parsers.*; import org.w3c.dom.*; /** DOM bejárása. @link.forrásfájl {@docRoot}/../data/xml/src DomDump.java @link.letöltés {@docRoot}/../data/xml DomDump.jar @since Java 2 Útikalauz programozóknak 5.0 */ public class DomDump { public static void traverseDOM( Node node, String indent ) { indent = indent + " "; switch( node.getNodeType() ) { case Node.ATTRIBUTE_NODE: break; //Ez most nem fordulhat elő case Node.CDATA_SECTION_NODE: //Most nem teszünk különbséget case Node.TEXT_NODE: //CDATA és sima szöveg közt. //A szövegből kihagyjuk a minket zavaró white-space-eket //Így szebb lesz a kimenet. String text = node.getNodeValue().trim(); if ( text.length() != 0 ) { System.out.println( indent + text ); } break; case Node.COMMENT_NODE: System.out.println( indent + "" ); break; case Node.DOCUMENT_FRAGMENT_NODE: break; //Ez nem fordulhat elő case Node.DOCUMENT_TYPE_NODE: case Node.ENTITY_NODE: case Node.PROCESSING_INSTRUCTION_NODE: //Bár egyszerűek case Node.NOTATION_NODE: break; //ezt a négyet most kihagyjuk. case Node.ENTITY_REFERENCE_NODE: //Csak a példa kedvéért... //Ha tényleg szerepelne elrontaná egy picit a megjelenítést //a soremelés, stb. miatt System.out.println( indent + "&" + node.getNodeName() + ";"); case Node.DOCUMENT_NODE: System.out.println( "" ); NodeList nodeList = node.getChildNodes(); for ( int i = 0; i < nodeList.getLength(); i++ ) { traverseDOM( nodeList.item( i ), indent ); } break; case Node.ELEMENT_NODE: System.out.print( indent + "<" + node.getNodeName() ); //Kiírjuk az attribútumokat NamedNodeMap attrMap = node.getAttributes(); for ( int i = 0; i < attrMap.getLength(); i++ ) { Node attr = attrMap.item( i ); System.out.print( " " + attr.getNodeName() + "=\"" + attr.getNodeValue() + "\"" ); } if ( node.hasChildNodes() ) { System.out.println( ">" ); NodeList nodeElementList = node.getChildNodes(); for ( int i = 0; i < nodeElementList.getLength(); i++ ) { traverseDOM( nodeElementList.item( i ), indent ); } System.out.println( indent + "" ); } else System.out.println( "/>" ); break; } } public static void main( String[] args ) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder(); Document doc = parser.parse( "elso_dtd.xml" ); traverseDOM( doc, "" ); } catch (Exception e) { System.err.println( "Hiba:" + e ); } } }