Commit af7999d6 by Patryk Czarnik

Przykład wypisywania DOM

parent c8362784
<dokument>
<osoba plec="K">
<imie>Ala</imie>
<nazwisko>Kowalska</nazwisko>
</osoba>
<osoba plec="K">
<imie>Ola</imie>
<nazwisko>Malinowska</nazwisko>
</osoba>
<osoba plec="M">
<imie>Jan</imie>
<nazwisko>Kowalski</nazwisko>
</osoba>
</dokument>
\ No newline at end of file
package przyklady_dom;
import org.w3c.dom.Node;
/**Klasa sluzaca do prostego wypisywania informacji o drzewie DOM.
* @author Patryk Czarnik
*
*/
public class DomSimplePrinter {
/**Domyslny konstruktor. */
public DomSimplePrinter() {
super();
}
/**Przechodzi podane drzewo DOM i wypisuje proste
* informacje o niektorych typach wezlow.
* @param nd wezel, ktorego podrzewo jest wypisywane
*/
public void printDomTree(Node nd) {
switch(nd.getNodeType()) {
case Node.DOCUMENT_NODE :
System.out.println("DOKUMENT");
printChildren(nd);
break;
case Node.ELEMENT_NODE :
System.out.println("ELEMENT: qName="+nd.getNodeName()+" URI= "+nd.getNamespaceURI()+
" localName="+nd.getLocalName()+" attributes:"+nd.getAttributes().getLength());
printChildren(nd);
break;
case Node.TEXT_NODE :
String napis = nd.getNodeValue();
/* obcinam gdyby byl bardzo dlugi */
if(napis.length() > 512)
napis = napis.substring(0, 512);
System.out.println("TEXT: "+napis);
break;
}
}
/**Przechodzi dzieci podanego wezla i wywoluje dla nich
* metode printDomTree.
* @param nd wezel, ktorego dzieci przechodzimy
*/
private void printChildren(Node nd) {
for(Node cur = nd.getFirstChild(); cur != null; cur = cur.getNextSibling()) {
printDomTree(cur);
}
}
}
package przyklady_dom;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
/**Przyklad tworzenia drzewa DOM przy uzyciu obiektu DocumentBuilder.
* Program parsuje podany dokument do drzewa DOM,
* a nastepnie wypisuje informacje o dokumencie uzywajac
* obiektu klasy DomSimplePrinter.
* @author Patryk Czarnik
*/
public class PrzykladDomBuilder {
public static void main(String[] args) {
String plik = "simple.xml";
try {
System.out.println("Pocztek dzialania.");
/* tworzymy parser DOM */
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
/* parsujemy dokument, doc bedzie korzeniem drzewa DOM */
System.out.println("Poczatek parsowania.");
Document doc = parser.parse(plik);
/* wypisujemy informacje o drzewie */
System.out.println("Poczatek przetwarzania.");
DomSimplePrinter simplePrinter = new DomSimplePrinter();
simplePrinter.printDomTree(doc);
System.out.println("Koniec.");
} catch(Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment