KickJava   Java API By Example, From Geeks To Geeks.

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


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.Comment;
28 import nu.xom.Document;
29 import nu.xom.Node;
30 import nu.xom.ParentNode;
31 import nu.xom.ParsingException;
32 import nu.xom.ProcessingInstruction;
33
34 /**
35  * <p>
36  * Demonstrates moving nodes from one part of the tree
37  * to a different part.
38  * </p>
39  *
40  * @author Elliotte Rusty Harold
41  * @version 1.0
42  *
43  */

44 public class Restructurer {
45
46     
47     // Since this methods only operates on its argument and
48
// does not interact with any fields in the class, it's
49
// plausibly made static.
50
public static void processNode(Node current) {
51     
52         if (current instanceof Comment
53           || current instanceof ProcessingInstruction) {
54             Document document = current.getDocument();
55             ParentNode root = document.getRootElement();
56             current.detach();
57             document.insertChild(current, document.indexOf(root));
58         }
59         else {
60             for (int i = 0; i < current.getChildCount(); i++) {
61                 processNode(current.getChild(i));
62             }
63         }
64     
65     }
66
67     
68     public static void main(String JavaDoc[] args) {
69      
70         if (args.length <= 0) {
71             System.out.println(
72               "Usage: java nu.xom.samples.RestructureDriver URL"
73             );
74             return;
75         }
76         String JavaDoc url = args[0];
77     
78         try {
79             // Find a parser
80
Builder parser = new Builder();
81       
82             // Read the document
83
Document document = parser.build(url);
84      
85             // Modify the document
86
Restructurer.processNode(document.getRootElement());
87       
88             // Write it out again
89
System.out.println(document.toXML());
90       
91         }
92         catch (ParsingException ex) {
93             System.out.println(url + " is not well-formed.");
94         }
95         catch (IOException JavaDoc ex) {
96             System.out.println(
97              "Due to an IOException, the parser could not read " + url
98             );
99         }
100    
101     }
102
103 }
104
105
106
Popular Tags