1 21 22 package nu.xom.samples; 23 24 import java.io.IOException ; 25 26 import nu.xom.Builder; 27 import nu.xom.Document; 28 import nu.xom.Element; 29 import nu.xom.Elements; 30 import nu.xom.Node; 31 import nu.xom.ParentNode; 32 import nu.xom.ParsingException; 33 34 44 public class RDDLStripper { 45 46 public final static String RDDL_NAMESPACE 47 = "http://www.rddl.org/"; 48 49 public static void main(String [] args) { 50 51 if (args.length <= 0) { 52 System.out.println("Usage: java nu.xom.samples.RDDLStripper URL"); 53 return; 54 } 55 56 try { 57 Builder parser = new Builder(); 58 Document doc = parser.build(args[0]); 59 60 strip(doc.getRootElement()); 61 62 63 System.out.println(doc.toXML()); 64 } 65 catch (ParsingException ex) { 66 System.out.println(args[0] + " is not well-formed."); 67 System.out.println(ex.getMessage()); 68 } 69 catch (IOException ex) { 70 System.out.println( 71 "Due to an IOException, the parser could not read " 72 + args[0] 73 ); 74 } 75 76 } 77 78 public static void strip(Element element) { 79 80 if (element.getNamespaceURI().equals(RDDL_NAMESPACE)) { 81 82 ParentNode parent = element.getParent(); 83 int position = 0; 84 for (; position < parent.getChildCount(); position++) { 85 if (parent.getChild(position) == element) break; 86 } 87 parent.removeChild(position); 88 while (element.getChildCount() > 0) { 89 Node child = element.getChild(0); 90 element.removeChild(0); 91 parent.insertChild(child, position); 92 position++; 93 if (child instanceof Element) strip((Element) child); 94 } 95 96 } 97 else { 98 Elements elements = element.getChildElements(); 99 for (int i = 0; i < elements.size(); i++) { 100 strip(elements.get(i)); 101 } 102 } 103 104 } 105 106 } | Popular Tags |