JAXP Beispiele

DOM Beispiele

DOMSchreiber:

import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.NamedNodeMap; 
import org.w3c.dom.Element; 
import org.w3c.dom.Text; 
import org.w3c.dom.Comment; 
import org.w3c.dom.EntityReference; 
import org.w3c.dom.DocumentType; 
import java.io.IOException;
import java.io.PrintWriter;
import org.xml.sax.SAXException;


public class DOMSchreiber {

    PrintWriter pw = null;

    public DOMSchreiber() {
	pw = new Screen();
    }

    public DOMSchreiber(PrintWriter p) {
	pw = p;
    }

    public void printNode(Node node) {
	switch ( node.getNodeType() ) {
	case Node.ELEMENT_NODE: 
            printElement( (Element)node );
	    break;
	case Node.ATTRIBUTE_NODE: 
            printAttributes( (NamedNodeMap)node );
	    break;
	case Node.TEXT_NODE: 
            printText( (Text)node );
	    break;
	case Node.CDATA_SECTION_NODE: 
            printCData( (Text)node );
	    break;
	case Node.PROCESSING_INSTRUCTION_NODE: 
            printPI( node );
	    break;
	case Node.COMMENT_NODE: 
            printComment( (Comment)node );
	    break;
	case Node.DOCUMENT_TYPE_NODE: 
            printDoctype( (DocumentType)node );
	    break;
	case Node.DOCUMENT_NODE: 
            printDocument( (Document)node );
	    break;
	case Node.ENTITY_REFERENCE_NODE: 
            printEntityReference( (EntityReference)node );
	    break;
	default: pw.println("<!-- " + node + " -->");
	}
    }


    public void printElement(Element el) {
        String name = el.getNodeName();
        pw.print("<" +  name );
        printAttributes( el.getAttributes() );
        NodeList nl = el.getChildNodes();
        if ( ( nl == null ) || ( nl.getLength() == 0 ) ) {
	    pw.print(" />");
            return;
	}
        pw.print(">"); 
	for (int i = 0; i < nl.getLength(); i++ ){
	    printNode(nl.item(i));
	}
        pw.print("</" + name + ">");

    }


    public void printAttributes(NamedNodeMap at) {
        if ( at == null ) return;
        for ( int i = 0; i < at.getLength(); i++ ){
            Node an = at.item(i);
            pw.print(" " + an.getNodeName() + "=\"");
            pw.print(an.getNodeValue() + "\"");
	}
    }


    public void printText(Text tx) {
	pw.print( tx.getData() );
    }


    public void printEntityReference(EntityReference er) {
	pw.print("&" + er.getNodeName() + ";" );
    }


    public void printComment(Comment c) {
	pw.print("<!--");
	pw.print( c.getData() );
	pw.print("-->");
    }


    public void printDoctype(DocumentType d) {
	pw.print("<!DOCTYPE ");
	pw.print( d.getName() );
        String pid = d.getPublicId();
	if ( pid != null ) {
	    pw.print(" PUBLIC \"" + pid + "\"\n          ");
	} else {
	    pw.print(" SYSTEM " );
	}
        pw.print("\"" + d.getSystemId() + "\" ");
	pw.println(">");
    }


    public void printCData(Text tx) {
	pw.print("<![CDATA[ ");
	pw.print( tx.getNodeValue() );
	pw.print("]]>");
    }


    public void printDocument(Document doc) {
        printNode( doc.getDoctype() );
        printNode( doc.getDocumentElement() );
    }


    public void printPI(Node pi) {
	pw.print("<?" + pi.getNodeName() );
	pw.print(" " + pi.getNodeValue() + "?>" );
    }


    public void flush() {
	pw.flush();
    }


    public void close() {
	pw.close();
    }
}

datei.xhtml:

<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Titel</title>
<?php 
  $a=9; 
  function yyy(a) {
    if ( a > 2 ) { 
       print("<p>nonsense</p>"); 
    }
  }
?>
<!-- funktions definitionen -->
<script type="text/javascript" language="JavaScript">
<![CDATA[ 
  function xxx(a) {
    if ( a > 2 ) { 
       document.write("<p>nonsense</p>"); 
    }
  }
]]>
</script>
</head>
<body bgcolor="white">
<h1>Überschrift A</h1>
<p align="center">Paragraph mit <em>Hervorhebung</em>
und einem <br /> Zeilenumbruch.
</p>
<ul>
<li>Listen Element</li>
<li>Entity Element &abc; </li>
</ul>
<h1>Überschrift B</h1>
<p>Text eines zweiten Paragraphen mit 
<strong>Hervorhebung</strong> 
ohne Zeilenumbruch.
</p>
<h1 count="10">Überschrift C</h1>
<p>Text eines dritten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
<h1>Überschrift D</h1>
<p>Text eines vierten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
</body>
</html>

Ausgabe:

Warning: validation was turned on but an org.xml.sax.ErrorHandler was not
set, which is probably not what is desired.  Parser will use a default
ErrorHandler to print the first 10 errors.  Please call
the 'setErrorHandler' method to fix this.
Error: URI=datei.xhtml Line=41: Attribute "count" must be declared for element type "h1".
doc(org.apache.xerces.dom.DeferredDocumentImpl) = [#document: null]
document:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Titel</title>
<?php $a=9; 
  function yyy(a) {
    if ( a > 2 ) { 
       print("<p>nonsense</p>"); 
    }
  }
?>
<!-- funktions definitionen -->
<script language="JavaScript" type="text/javascript">
<![CDATA[  ]]>
</script>
</head>
<body bgcolor="white">
<h1>Überschrift A</h1>
<p align="center">Paragraph mit <em>Hervorhebung</em>
und einem <br clear="none" /> Zeilenumbruch.
</p>
<ul>
<li>Listen Element</li>
<li>Entity Element &abc; </li>
</ul>
<h1>Überschrift B</h1>
<p>Text eines zweiten Paragraphen mit 
<strong>Hervorhebung</strong> 
ohne Zeilenumbruch.
</p>
<h1 count="10">Überschrift C</h1>
<p>Text eines dritten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
<h1>Überschrift D</h1>
<p>Text eines vierten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
</body>
</html>

SAX Beispiele

Ausgabe für 'datei.xhtml' von oben:

<?xml version="1.0" encoding="iso-8859-1"?>

<!-- [resolveEntity] publicId: -//W3C//DTD XHTML 1.0 Transitional//EN, systemId: DTD/xhtml1-transitional.dtd -->
<!DOCTYPE ???? PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd" >

<!-- [resolveEntity] publicId: -//W3C//ENTITIES Latin 1 for XHTML//EN, systemId: xhtml-lat1.ent -->

<!-- [resolveEntity] publicId: -//W3C//ENTITIES Symbols for XHTML//EN, systemId: xhtml-symbol.ent -->

<!-- [resolveEntity] publicId: -//W3C//ENTITIES Special for XHTML//EN, systemId: xhtml-special.ent -->
<html>
<head>
<title>Titel</title>
<?php $a=9; 
  function yyy(a) {
    if ( a > 2 ) { 
       print("<p>nonsense</p>"); 
    }
  }
?>
<script type="text/javascript" language="JavaScript">
 
  function xxx(a) {
    if ( a > 2 ) { 
       document.write("<p>nonsense</p>"); 
    }
  }

</script>
</head>
<body bgcolor="white">
<h1>Überschrift A</h1>
<p align="center">Paragraph mit <em>Hervorhebung</em>
und einem <br clear="none"></br> Zeilenumbruch.
</p>
<ul>
<li>Listen Element</li>
<li>Entity Element &abc; </li>
</ul>
<h1>Überschrift B</h1>
<p>Text eines zweiten Paragraphen mit 
<strong>Hervorhebung</strong> 
ohne Zeilenumbruch.
</p>

<!-- [Error] datei.xhtml: line 41, column 16:
Attribute "count" must be declared for element type "h1". -->
<h1 count="10">Überschrift C</h1>
<p>Text eines dritten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
<h1>Überschrift D</h1>
<p>Text eines vierten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
</body>
</html>

SAXNummer:

import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SAXNummer {

    public static void main(String[] args) {

	SAXParserFactory pfac = SAXParserFactory.newInstance();
	SAXParser parser = null;

	try {
	    //	   pfac.setValidating(true);
	   pfac.setNamespaceAware(true);
	   parser = pfac.newSAXParser();
	}
	catch (ParserConfigurationException e) {
	    e.printStackTrace();
	}
	catch (SAXException e) {
	    e.printStackTrace();
	}

	Screen sc = new Screen();
        String uri = "datei.xhtml";
	DefaultHandler dh = new SAXUtil(sc);

	try {
            parser.parse(uri,dh);
	}
	catch (SAXException e) {
	    e.printStackTrace();
	}
	catch (IOException e) {
	    e.printStackTrace();
	}
    }
}

Ausgabe für 'datei.xhtml' von oben:

<?xml version="1.0" encoding="iso-8859-1"?>
<html>
<head>
<title>Titel</title>
<?php $a=9; 
  function yyy(a) {
    if ( a > 2 ) { 
       print("<p>nonsense</p>"); 
    }
  }
?>

<script type="text/javascript" language="JavaScript">
 
  function xxx(a) {
    if ( a > 2 ) { 
       document.write("<p>nonsense</p>"); 
    }
  }

</script>
</head>
<body bgcolor="white">
<h1 count="1">Kapitel 1. Überschrift A</h1>
<p align="center">Paragraph mit <em>Hervorhebung</em>
und einem <br clear="none"></br> Zeilenumbruch.
</p>
<ul>
<li>Listen Element</li>
<li>Entity Element &abc; </li>
</ul>
<h1 count="2">Kapitel 2. Überschrift B</h1>
<p>Text eines zweiten Paragraphen mit 
<strong>Hervorhebung</strong> 
ohne Zeilenumbruch.
</p>
<h1 count="10">Kapitel 10. Überschrift C</h1>
<p>Text eines dritten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
<h1 count="11">Kapitel 11. Überschrift D</h1>
<p>Text eines vierten Paragraphen ohne 
Hervorhebungen und ohne Zeilenumbruch.
</p>
</body>
</html>

© Universität Mannheim, Rechenzentrum, 1998-2005.

Heinz Kredel

Last modified: Mon May 16 18:32:30 CEST 2005