KickJava   Java API By Example, From Geeks To Geeks.

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


1 /* Copyright 2002, 2003 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.Document;
28 import nu.xom.Node;
29 import nu.xom.ParsingException;
30 import nu.xom.Text;
31
32
33 /**
34  * <p>
35  * Demonstrates getter and setter methods in the <code>Text</code> class,
36  * as well as recursive descent through a document.
37  * </p>
38  *
39  * @author Elliotte Rusty Harold
40  * @version 1.0
41  *
42  */

43 public class ROT13XML {
44
45     // note use of recursion
46
public static void encode(Node node) {
47     
48         if (node instanceof Text) {
49           Text text = (Text) node;
50           String JavaDoc data = text.getValue();
51           text.setValue(rot13(data));
52         }
53         
54         // recurse the children
55
for (int i = 0; i < node.getChildCount(); i++) {
56             encode(node.getChild(i));
57         }
58     
59     }
60   
61     public static String JavaDoc rot13(String JavaDoc s) {
62     
63         StringBuffer JavaDoc out = new StringBuffer JavaDoc(s.length());
64         for (int i = 0; i < s.length(); i++) {
65           int c = s.charAt(i);
66           if (c >= 'A' && c <= 'M') out.append((char) (c+13));
67           else if (c >= 'N' && c <= 'Z') out.append((char) (c-13));
68           else if (c >= 'a' && c <= 'm') out.append((char) (c+13));
69           else if (c >= 'n' && c <= 'z') out.append((char) (c-13));
70           else out.append((char) c);
71         }
72         return out.toString();
73     
74     }
75
76   public static void main(String JavaDoc[] args) {
77
78     if (args.length <= 0) {
79       System.out.println("Usage: java nu.xom.samples.ROT13XML URL");
80       return;
81     }
82     
83     String JavaDoc url = args[0];
84     
85     try {
86       Builder parser = new Builder();
87       
88       // Read the document
89
Document document = parser.build(url);
90       
91       // Modify the document
92
ROT13XML.encode(document);
93
94       // Write it out again
95
System.out.println(document.toXML());
96
97     }
98     catch (IOException JavaDoc ex) {
99       System.out.println(
100       "Due to an IOException, the parser could not encode " + url
101       );
102     }
103     catch (ParsingException ex) {
104       System.out.println(ex);
105     }
106      
107   } // end main
108

109 }
110
Popular Tags