fork(18) download
  1. import java.io.File;
  2. import javax.xml.parsers.*;
  3. import org.w3c.dom.*;
  4. import javax.xml.transform.*;
  5. import javax.xml.transform.dom.*;
  6. import javax.xml.transform.stream.*;
  7. class MainClass {
  8. public static void main(String[] args) throws Exception {
  9. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //создали фабрику строителей, сложный и грамосткий процесс (по реже выполняйте это действие)
  10. DocumentBuilder db = dbf.newDocumentBuilder(); // создали конкретного строителя документа
  11. Document doc = db.parse(System.in); // стооитель построил документ
  12. Node x = doc;
  13. visit(doc, 0);
  14.  
  15.  
  16.  
  17. // print
  18. /*
  19.   DOMSource source = new DOMSource(doc);
  20.   StreamResult result = new StreamResult(System.out);//Может быть любой поток вывода (файл, сокет ....)
  21.   TransformerFactory transFactory = TransformerFactory.newInstance(); // Об этом подробней в 4 вопросе
  22.   Transformer transformer = transFactory.newTransformer();
  23.   transformer.transform(source, result);
  24.   */
  25. }
  26. public static void visit(Node node, int level) {
  27. NodeList list = node.getChildNodes();
  28. for (int i = 0; i < list.getLength(); i++) {
  29. Node childNode = list.item(i); // текущий нод
  30. process(childNode, level + 1); // обработка
  31. visit(childNode, level + 1); // рекурсия
  32. }
  33. }
  34. public static void process(Node node, int level) {
  35. for (int i = 0; i < level; i++) {
  36. System.out.print('\t');
  37. }
  38. System.out.print(node.getNodeName());
  39. if (node instanceof Element){
  40. Element e = (Element) node;
  41. // работаем как с элементом (у него есть атрибуты и схема)
  42. NamedNodeMap atts = e.getAttributes();
  43. try {
  44. System.out.print(": " + atts.getNamedItem("id").getNodeValue());
  45. } catch (Exception ex) {System.out.print(": -");}
  46. }
  47. System.out.println();
  48. }
  49. }
  50.  
Success #stdin #stdout 0.16s 321088KB
stdin
<people_list> 
  <person id="123"> 
    <name>Marla Bloggs</name> 
    <birthdate>2013-01-22</birthdate> 
    <gender>Female</gender> 
  </person> 
</people_list> 
stdout
	people_list: -
		#text
		person: 123
			#text
			name: -
				#text
			#text
			birthdate: -
				#text
			#text
			gender: -
				#text
			#text
		#text