1
/* Copyright 2002-2004 Elliotte Rusty Harold
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.
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.
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
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/
22
package nu.xom.samples;
24
import java.io.IOException;
26
import nu.xom.Builder;
27
import nu.xom.Comment;
28
import nu.xom.Document;
30
import nu.xom.ParentNode;
31
import nu.xom.ParsingException;
32
import nu.xom.ProcessingInstruction;
36
* Demonstrates moving nodes from one part of the tree
37
* to a different part.
40
* @author Elliotte Rusty Harold
44
public class Restructurer {
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) {
52
if (current instanceof Comment
53
|| current instanceof ProcessingInstruction) {
54
Document document = current.getDocument();
55
ParentNode root = document.getRootElement();
57
document.insertChild(current, document.indexOf(root));
60
for (int i = 0; i < current.getChildCount(); i++) {
61
processNode(current.getChild(i));
68
public static void main(String[] args) {
70
if (args.length <= 0) {
72
"Usage: java nu.xom.samples.RestructureDriver URL"
80
Builder parser = new Builder();
83
Document document = parser.build(url);
85
// Modify the document
86
Restructurer.processNode(document.getRootElement());
89
System.out.println(document.toXML());
92
catch (ParsingException ex) {
93
System.out.println(url + " is not well-formed.");
95
catch (IOException ex) {
97
"Due to an IOException, the parser could not read " + url