OSDN Git Service

Android: Added setNamespaceAware(true) to ogre xml loader if running on android
authorkimxilxyong <kimxilxyong@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Mon, 27 Jun 2011 06:00:42 +0000 (06:00 +0000)
committerkimxilxyong <kimxilxyong@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Mon, 27 Jun 2011 06:00:42 +0000 (06:00 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7754 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/ogre/com/jme3/scene/plugins/ogre/MeshLoader.java
engine/src/ogre/com/jme3/scene/plugins/ogre/SceneLoader.java
engine/src/ogre/com/jme3/scene/plugins/ogre/SkeletonLoader.java

index 9c4cd97..d3b6214 100644 (file)
@@ -52,6 +52,7 @@ import com.jme3.scene.VertexBuffer;
 import com.jme3.scene.VertexBuffer.Format;
 import com.jme3.scene.VertexBuffer.Type;
 import com.jme3.scene.VertexBuffer.Usage;
+import com.jme3.system.JmeSystem;
 import com.jme3.util.BufferUtils;
 import com.jme3.util.IntMap;
 import com.jme3.util.IntMap.Entry;
@@ -67,6 +68,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParserFactory;
+
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -789,8 +794,18 @@ public class MeshLoader extends DefaultHandler implements AssetLoader {
                 }
 
             }
-
-            XMLReader xr = XMLReaderFactory.createXMLReader();
+            
+            // Added by larynx 25.06.2011
+            // Android needs the namespace aware flag set to true                 
+            XMLReader xr;
+            if (JmeSystem.getFullName().toUpperCase().contains("ANDROID")) {
+                SAXParserFactory factory = SAXParserFactory.newInstance();
+                factory.setNamespaceAware(true);
+                xr = factory.newSAXParser().getXMLReader();                
+            } else {
+                xr = XMLReaderFactory.createXMLReader();
+            }
+            
             xr.setContentHandler(this);
             xr.setErrorHandler(this);
             InputStreamReader r = new InputStreamReader(info.openStream());
@@ -802,6 +817,10 @@ public class MeshLoader extends DefaultHandler implements AssetLoader {
             IOException ioEx = new IOException("Error while parsing Ogre3D mesh.xml");
             ioEx.initCause(ex);
             throw ioEx;
+        } catch (ParserConfigurationException ex) {
+            IOException ioEx = new IOException("Error while parsing Ogre3D mesh.xml");
+            ioEx.initCause(ex);
+            throw ioEx;
         }
 
     }
index c452338..39da3c2 100644 (file)
@@ -45,6 +45,7 @@ import com.jme3.math.Quaternion;
 import com.jme3.math.Vector3f;\r
 import com.jme3.scene.Node;\r
 import com.jme3.scene.Spatial;\r
+import com.jme3.system.JmeSystem;\r
 import com.jme3.util.xml.SAXUtil;\r
 import java.io.IOException;\r
 import java.io.InputStreamReader;\r
@@ -52,6 +53,9 @@ import java.util.Stack;
 import java.util.logging.Level;\r
 import java.util.logging.Logger;\r
 \r
+import javax.xml.parsers.ParserConfigurationException;\r
+import javax.xml.parsers.SAXParserFactory;\r
+\r
 import org.xml.sax.Attributes;\r
 import org.xml.sax.InputSource;\r
 import org.xml.sax.SAXException;\r
@@ -351,7 +355,18 @@ public class SceneLoader extends DefaultHandler implements AssetLoader {
                 logger.log(Level.WARNING, "Cannot locate material file {0}", ex.getMessage());\r
             }\r
 \r
-            XMLReader xr = XMLReaderFactory.createXMLReader();\r
+            \r
+            // Added by larynx 25.06.2011\r
+            // Android needs the namespace aware flag set to true \r
+            XMLReader xr;\r
+            if (JmeSystem.getFullName().toUpperCase().contains("ANDROID")) {\r
+                SAXParserFactory factory = SAXParserFactory.newInstance();\r
+                factory.setNamespaceAware(true);\r
+                xr = factory.newSAXParser().getXMLReader();                \r
+            } else {\r
+                xr = XMLReaderFactory.createXMLReader();\r
+            }\r
+            \r
             xr.setContentHandler(this);\r
             xr.setErrorHandler(this);\r
             InputStreamReader r = new InputStreamReader(info.openStream());\r
@@ -362,6 +377,10 @@ public class SceneLoader extends DefaultHandler implements AssetLoader {
             IOException ioEx = new IOException("Error while parsing Ogre3D dotScene");\r
             ioEx.initCause(ex);\r
             throw ioEx;\r
+        } catch (ParserConfigurationException ex) {\r
+            IOException ioEx = new IOException("Error while parsing Ogre3D dotScene");\r
+            ioEx.initCause(ex);\r
+            throw ioEx;\r
         }\r
     }\r
 \r
index 9424f26..5cd0102 100644 (file)
@@ -40,6 +40,7 @@ import com.jme3.asset.AssetLoader;
 import com.jme3.asset.AssetManager;
 import com.jme3.math.Quaternion;
 import com.jme3.math.Vector3f;
+import com.jme3.system.JmeSystem;
 import com.jme3.util.xml.SAXUtil;
 import java.io.IOException;
 import java.io.InputStream;
@@ -50,6 +51,11 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Stack;
 import java.util.logging.Logger;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -252,7 +258,18 @@ public class SkeletonLoader extends DefaultHandler implements AssetLoader {
 
     public Object load(InputStream in) throws IOException {
         try {
-            XMLReader xr = XMLReaderFactory.createXMLReader();
+            
+            // Added by larynx 25.06.2011
+            // Android needs the namespace aware flag set to true 
+            XMLReader xr;
+            if (JmeSystem.getFullName().toUpperCase().contains("ANDROID")) {
+                SAXParserFactory factory = SAXParserFactory.newInstance();
+                factory.setNamespaceAware(true);
+                xr = factory.newSAXParser().getXMLReader();                
+            } else {
+                xr = XMLReaderFactory.createXMLReader();
+            }
+                                    
             xr.setContentHandler(this);
             xr.setErrorHandler(this);
             InputStreamReader r = new InputStreamReader(in);
@@ -269,7 +286,13 @@ public class SkeletonLoader extends DefaultHandler implements AssetLoader {
             ioEx.initCause(ex);
             fullReset();
             throw ioEx;
+        } catch (ParserConfigurationException ex) {
+            IOException ioEx = new IOException("Error while parsing Ogre3D dotScene");
+            ioEx.initCause(ex);
+            fullReset();
+            throw ioEx;
         }
+        
     }
 
     public Object load(AssetInfo info) throws IOException {