!!! Listing 1
import java.io.File;
import java.io.FileReader;
import java.io.PrintStream;
import org.xml.sax.AttributeList;
import org.xml.sax.HandlerBase;
import org.xml.sax.InputSource;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
public class HTMLConverterSAX extends HandlerBase {
PrintStream out;
public HTMLConverterSAX(PrintStream out) {
this.out = out;
}
public void startDocument() throws SAXException {
out.println("\n
\nTelefonliste\n");
out.println("\n");
}
public void endDocument() throws SAXException {
out.println("\n\n");
}
public void startElement(java.lang.String name, AttributeList atts)
throws SAXException {
if (name.equals("MITARBEITER")) {
out.print("");
} else if (name.equals("TELEFONLISTE")) {
out.println("Telefonliste
\n");
} else {
out.print("");
}
}
public void endElement(java.lang.String name) throws SAXException {
if (name.equals("MITARBEITER")) {
out.println("");
} else if (name.equals("TELEFONLISTE")) {
out.println(" |
");
}
}
public void characters(char[] ch, int start, int length)
throws SAXException {
out.print(unicode2HTML(ch, start, length));
}
String unicode2HTML(char[] ch, int start, int length) {
StringBuffer s = new StringBuffer();
for (int i = start; i < start+length; i++) {
switch(ch[i]) {
case 'ä': s.append("ä"); break;
case 'ö': s.append("ö"); break;
case 'ü': s.append("ü"); break;
case 'ß': s.append("ß"); break;
case '\u00e9': s.append("é"); break;
default: s.append(ch[i]);
}
}
return s.toString();
}
public static void main(String[] args)
throws Exception {
Parser parser = new com.sun.xml.parser.Parser();
parser.setDocumentHandler(new HTMLConverterSAX(System.out));
InputSource source = new InputSource(new FileReader(args[0]));
source.setSystemId("file:"+new File(args[0]).getAbsolutePath());
parser.parse(source);
}
}
!!! Listing 2
!!! Listing 3
Henning Behme
hb@ix.heise.de
-374
Jürgen Seeger
js@ix.heise.de
-386
André von Raison
avr@ix.heise.de
-377
!!! Listing 4
import java.io.FileReader;
import java.io.PrintStream;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import com.ibm.xml.parser.NonRecursivePreorderTreeTraversal;
import com.ibm.xml.parser.Parser;
import com.ibm.xml.parser.TXDocument;
import com.ibm.xml.parser.TXElement;
import com.ibm.xml.parser.NOOPVisitor;
import com.ibm.xml.parser.TXText;
public class HTMLConverterIBM extends NOOPVisitor {
PrintStream out;
public HTMLConverterIBM(PrintStream out) {
this.out = out;
}
// Kopf und Fuss analog SAX-Beispiel
public void visitElementPre(TXElement element) {
String name = element.getName();
if (name.equals("MITARBEITER")) {
out.print("
");
} else if (name.equals("TELEFONLISTE")) {
out.println("Telefonliste
\n");
} else if (name.equals("EMAIL")) {
Node child; String email;
// Zugriff auf Tochterknoten
child = element.getFirstChild();
email = ((TXText)child).getText();
out.print("");
} else {
out.print(" | ");
}
}
public void visitElementPost(TXElement element) {
String name = element.getName();
if (name.equals("MITARBEITER")) {
out.println("");
} else if (name.equals("TELEFONLISTE")) {
out.println(" |
");
} else {
if (name.equals("EMAIL")) {
out.print("");
}
out.print("");
}
}
// Text-Ausgabe analog SAX-Beispiel
public static void main(String[] args) throws Exception {
Parser parser = new Parser("");
NonRecursivePreorderTreeTraversal traversal;
HTMLConverterIBM converter;
converter = new HTMLConverterIBM(System.out);
traversal = new NonRecursivePreorderTreeTraversal(converter);
Document document = parser.readStream(new FileReader(args[0]));
traversal.traverse(document);
}
}
!!! Listing 5
import com.ibm.xml.parser.TXElement;
public class Mitarbeiter extends TXElement {
String name, email, phone;
public Mitarbeiter() {
super("MITARBEITER");
}
public String getName() { return name; }
public String getEmail() { return email; }
public String getPhone() { return phone; }
public void setName(String name) { this.name = name; }
public void setEmail(String email) { this.email = email; }
public void setPhone(String phone) { this.phone = phone; }
}
import com.ibm.xml.parser.TXDocument;
import com.ibm.xml.parser.TXText;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class BeanFactory extends TXDocument {
public Element createElement(String tagName) {
if (tagName.equals("MITARBEITER")) {
Node node;
Mitarbeiter bean;
// Bean erzeugen
bean = new Mitarbeiter();
bean.setFactory(this);
// Daten aus den Tochterknoten holen
node = bean.getElementNamed("NAME").getFirstChild();
bean.setName(((TXText)node).getText());
node = bean.getElementNamed("EMAIL").getFirstChild();
bean.setEmail(((TXText)node).getText());
node = bean.getElementNamed("PHONE").getFirstChild();
bean.setPhone(((TXText)node).getText());
return bean;
} else
return super.createElement(tagName);
}
}