ROT13XML
import java.io.IOException;
import nu.xom.*;
public class ROT13XML {
// note use of recursion
public static void encode(Node node) {
if (node instanceof Text) {
Text text = (Text) node;
String data = text.getValue();
text.setValue(rot13(data));
}
// recurse the children
for (int i = 0; i < node.getChildCount(); i++) {
encode(node.getChild(i));
}
}
public static String rot13(String s) {
StringBuffer out = new StringBuffer(s.length());
for (int i = 0; i < s.length(); i++) {
int c = s.charAt(i);
if (c >= 'A' && c <= 'M') out.append((char) (c+13));
else if (c >= 'N' && c <= 'Z') out.append((char) (c-13));
else if (c >= 'a' && c <= 'm') out.append((char) (c+13));
else if (c >= 'n' && c <= 'z') out.append((char) (c-13));
else out.append((char) c);
}
return out.toString();
}
public static void main(String[] args) {
if (args.length <= 0) {
System.out.println("Usage: java ROT13XML URL");
return;
}
String url = args[0];
try {
Builder parser = new Builder();
// Read the document
Document document = parser.build(url);
// Modify the document
ROT13XML.encode(document);
// Write it out again
System.out.println(document.toXML());
}
catch (IOException ex) {
System.out.println(
"Due to an IOException, the parser could not encode " + url
);
}
catch (ParsingException ex) {
System.out.println(ex);
}
} // end main
}