KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nu > xom > samples > RDDLFilter


1 /* Copyright 2002-2004 Elliotte Rusty Harold
2    
3    This library is free software; you can redistribute it and/or modify
4    it under the terms of version 2.1 of the GNU Lesser General Public
5    License as published by the Free Software Foundation.
6    
7    This library is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10    GNU Lesser General Public License for more details.
11    
12    You should have received a copy of the GNU Lesser General Public
13    License along with this library; if not, write to the
14    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
15    Boston, MA 02111-1307 USA
16    
17    You can contact Elliotte Rusty Harold by sending e-mail to
18    elharo@metalab.unc.edu. Please include the word "XOM" in the
19    subject line. The XOM home page is located at http://www.xom.nu/
20 */

21
22 package nu.xom.samples;
23
24 import java.io.IOException JavaDoc;
25
26 import nu.xom.Builder;
27 import nu.xom.DocType;
28 import nu.xom.Document;
29 import nu.xom.Element;
30 import nu.xom.NodeFactory;
31 import nu.xom.Nodes;
32 import nu.xom.ParsingException;
33
34 /**
35  * <p>
36  * Demonstrates using the <code>Builder</code> and a custom
37  * <code>NodeFactory</code> to filter out start-tags and
38  * end-tags while leaving the content intact. Specifically,
39  * we filter out all the elements in the RDDL namespace.
40  * </p>
41  *
42  * @author Elliotte Rusty Harold
43  * @version 1.0
44  *
45  */

46 public class RDDLFilter extends NodeFactory {
47
48     public final static String JavaDoc RDDL_NAMESPACE
49        = "http://www.rddl.org/";
50
51     public Element startMakingElement(String JavaDoc name, String JavaDoc namespace) {
52         if (namespace.equals(RDDL_NAMESPACE)) return null;
53         return new Element(name, namespace);
54     }
55
56     public Nodes finishMakingElement(Element element) {
57         element.removeNamespaceDeclaration("rddl");
58         return new Nodes(element);
59     }
60
61     // change the DOCTYPE to XHTML Basic DOCTYPE
62
public Nodes makeDocType(String JavaDoc rootElementName,
63       String JavaDoc publicID, String JavaDoc systemID) {
64         return new Nodes(new DocType("html",
65           "PUBLIC \"-//W3C//DTD XHTML Basic 1.0//EN\"",
66           "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"));
67     }
68
69     public static void main(String JavaDoc[] args) {
70   
71         if (args.length <= 0) {
72           System.out.println("Usage: java nu.xom.samples.RDDLFilter URL");
73           return;
74         }
75         
76         try {
77           Builder parser = new Builder(new RDDLFilter());
78           Document doc = parser.build(args[0]);
79           System.out.println(doc.toXML());
80         }
81         catch (ParsingException ex) {
82           System.out.println(args[0] + " is not well-formed.");
83           System.out.println(ex.getMessage());
84         }
85         catch (IOException JavaDoc ex) {
86           System.out.println(
87            "Due to an IOException, the parser could not read "
88            + args[0]
89           );
90         }
91   
92     }
93
94 }
Popular Tags