Язык XML - практическое введение (часть 2)


DOM совместимые анализаторы - часть 4


}

/* Рекурсивный обход элементов документа, начиная с указанного элемента node. */

public void viewLogAsXML(Node node,String offs){

if (node == null) { return; } int type = node.getNodeType(); // Получение информации о типе текущего узла switch (type) { /* Если текщий узел - корневой элемент документа */

case Node.DOCUMENT_NODE: { out.println("<?xml version=\"1.0\" encoding=\"koi-8\"?>"); viewLogAsXML(((Document)node).getDocumentElement(),offs); out.flush(); break; }

/* Если текщий узел - элемент */

case Node.ELEMENT_NODE: { out.print(offs+"<"); // Печать названия элемента out.print(node.getNodeName()); // Получение списка атрибутов текущего элемента

NamedNodeMap attrs = node.getAttributes(); Node attr; for (int i = 0; i < attrs.getLength(); i++) { attr = attrs.item(i); out.print(' '); out.print(attr.getNodeName()+"=\""+attr.getNodeValue()+"\""); } out.println('>');

// Получение списка дочерних элементов NodeList children = node.getChildNodes();

// Если у текщего элемента есть дочерние, то выводим и их

if (children != null) { int len = children.getLength(); for (int i = 0; i < len; i++) { viewLogAsXML(children.item(i),offs+" "); } } break; }

/* Если текщий узел - текстовый */ case Node.TEXT_NODE: { out.println(offs+node.getNodeValue()); break; }

} // Печать закрывающего тэга элемента if (type == Node.ELEMENT_NODE) { out.print(offs+"</"); out.print(node.getNodeName()); out.println('>'); }

}

//======================================================= // Вывод в формате HTML //=====================

/* Вызов рекурсивного обходчика */

public void viewLog(){

// Header viewAsHTML("All log records:");

try {

// Вывод содержимого viewLog(null);

} catch (Exception e) { System.out.println(e.toString()); }

// Header viewAsHTML();

}

/* Печать только сообщений об ошибках */

public void viewErrors(){

// Header viewAsHTML("Log errors:");




Начало  Назад  Вперед



Книжный магазин