KickJava   Java API By Example, From Geeks To Geeks.

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


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 package nu.xom.samples;
22
23 import java.io.IOException JavaDoc;
24
25 import nu.xom.Attribute;
26 import nu.xom.Builder;
27 import nu.xom.Document;
28 import nu.xom.Element;
29 import nu.xom.NodeFactory;
30 import nu.xom.Nodes;
31 import nu.xom.ParsingException;
32
33 /**
34  * <p>
35  * A filter that converts attributes to child elements.
36  * This does not apply to namespace declaration attributes
37  * such as <code>xmlns</code> and <code>xmlns:<i>prefix</i></code>.
38  * </p>
39  *
40  * @author Elliotte Rusty Harold
41  * @version 1.0
42  */

43 public class AttributesToElements extends NodeFactory {
44     
45     private boolean maintainTypes = false;
46     
47     public AttributesToElements() {}
48
49     public AttributesToElements(boolean maintainTypes) {
50         this.maintainTypes = maintainTypes;
51     }
52
53     public Nodes makeAttribute(String JavaDoc name, String JavaDoc URI,
54       String JavaDoc value, Attribute.Type type) {
55           
56         Element element = new Element(name, URI);
57         element.appendChild(value);
58         if (maintainTypes
59           && !type.equals(Attribute.Type.UNDECLARED)
60           && !type.equals(Attribute.Type.ENUMERATION)) {
61             Attribute xsiType = new Attribute("xsi:type",
62               "http://www.w3.org/2001/XMLSchema-instance", type.getName());
63             element.addAttribute(xsiType);
64         }
65         return new Nodes(element);
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.AttributesToElements URL"
73           );
74           return;
75         }
76         
77         try {
78           Builder parser = new Builder(new AttributesToElements());
79           Document doc = parser.build(args[0]);
80           EZSerializer.write(doc, System.out);
81         }
82         catch (ParsingException ex) {
83           System.out.println(args[0] + " is not well-formed.");
84           System.out.println(ex.getMessage());
85         }
86         catch (IOException JavaDoc ex) {
87           System.out.println(
88            "Due to an IOException, the parser could not read "
89            + args[0]
90           );
91         }
92   
93     }
94
95 }
96
Popular Tags