• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2009-2010 jMonkeyEngine
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 package com.jme3.export.xml;
34 
35 import com.jme3.export.JmeExporter;
36 import com.jme3.export.OutputCapsule;
37 import com.jme3.export.Savable;
38 import java.io.File;
39 import java.io.FileOutputStream;
40 import java.io.IOException;
41 import java.io.OutputStream;
42 import javax.xml.parsers.DocumentBuilderFactory;
43 
44 /**
45  * Part of the jME XML IO system as introduced in the google code jmexml project.
46  *
47  * @author Kai Rabien (hevee) - original author of the code.google.com jmexml project
48  * @author Doug Daniels (dougnukem) - adjustments for jME 2.0 and Java 1.5
49  */
50 public class XMLExporter implements JmeExporter {
51 
52     public static final String ELEMENT_MAPENTRY = "MapEntry";
53     public static final String ELEMENT_KEY = "Key";
54     public static final String ELEMENT_VALUE = "Value";
55     public static final String ELEMENT_FLOATBUFFER = "FloatBuffer";
56     public static final String ATTRIBUTE_SIZE = "size";
57 
58     private DOMOutputCapsule domOut;
59 
XMLExporter()60     public XMLExporter() {
61 
62     }
63 
save(Savable object, OutputStream f)64     public boolean save(Savable object, OutputStream f) throws IOException {
65         try {
66             //Initialize Document when saving so we don't retain state of previous exports
67             this.domOut = new DOMOutputCapsule(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(), this);
68             domOut.write(object, object.getClass().getName(), null);
69             DOMSerializer serializer = new DOMSerializer();
70             serializer.serialize(domOut.getDoc(), f);
71             f.flush();
72             return true;
73         } catch (Exception ex) {
74             IOException e = new IOException();
75             e.initCause(ex);
76             throw e;
77         }
78     }
79 
save(Savable object, File f)80     public boolean save(Savable object, File f) throws IOException {
81         return save(object, new FileOutputStream(f));
82     }
83 
getCapsule(Savable object)84     public OutputCapsule getCapsule(Savable object) {
85         return domOut;
86     }
87 
getInstance()88     public static XMLExporter getInstance() {
89             return new XMLExporter();
90     }
91 
92 }
93