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>
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 KredelLast modified: Mon May 16 18:32:30 CEST 2005