KickJava   Java API By Example, From Geeks To Geeks.

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


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.Attribute;
27 import nu.xom.Builder;
28 import nu.xom.Element;
29 import nu.xom.NodeFactory;
30 import nu.xom.Nodes;
31 import nu.xom.ParsingException;
32 import nu.xom.ProcessingInstruction;
33
34 /**
35  * <p>
36  * Demonstrates using the <code>Builder</code> and a custom
37  * <code>NodeFactory</code> to list the processing instructions
38  * while avoiding the overhead of constructing a lot of unneeded
39  * nodes thus saving memory and time.
40  * </p>
41  *
42  * @author Elliotte Rusty Harold
43  * @version 1.0
44  *
45  */

46 public class StreamingProcessingInstructionLister extends NodeFactory {
47
48     private Nodes empty = new Nodes();
49
50     public Nodes makeComment(String JavaDoc data) {
51         return empty;
52     }
53
54     // We don't need text nodes at all
55
public Nodes makeText(String JavaDoc data) {
56         return empty;
57     }
58
59     public Element makeRootElement(String JavaDoc name, String JavaDoc namespace) {
60         return new Element(name, namespace);
61     }
62     
63     public Element startMakingElement(String JavaDoc name, String JavaDoc namespace) {
64         return null;
65     }
66
67     public Nodes makeAttribute(String JavaDoc name, String JavaDoc URI,
68       String JavaDoc value, Attribute.Type type) {
69         return empty;
70     }
71
72     public Nodes makeDocType(String JavaDoc rootElementName,
73       String JavaDoc publicID, String JavaDoc systemID) {
74         return empty;
75     }
76
77     public Nodes makeProcessingInstruction(
78       String JavaDoc target, String JavaDoc data) {
79         ProcessingInstruction pi
80           = new ProcessingInstruction(target, data);
81         System.out.println(pi.toXML());
82         return empty;
83     }
84
85     public static void main(String JavaDoc[] args) {
86   
87         if (args.length <= 0) {
88           System.out.println(
89             "Usage: java nu.xom.samples.StreamingProcessingInstructionLister URL"
90           );
91           return;
92         }
93         
94         try {
95           Builder parser = new Builder(new StreamingCommentReader());
96           parser.build(args[0]);
97         }
98         catch (ParsingException ex) {
99           System.out.println(args[0] + " is not well-formed.");
100           System.out.println(ex.getMessage());
101         }
102         catch (IOException JavaDoc ex) {
103           System.out.println(
104            "Due to an IOException, the parser could not read "
105            + args[0]
106           );
107         }
108   
109     }
110
111 }
Popular Tags