Ignore:
Timestamp:
09/28/09 18:47:31 (3 years ago)
Author:
jharrop
Message:

Modify load method to also support loading a Flat OPC .xml file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java

    r887 r905  
    2727 
    2828import javax.xml.bind.JAXBContext; 
     29import javax.xml.bind.JAXBElement; 
     30import javax.xml.bind.JAXBException; 
    2931import javax.xml.bind.Marshaller; 
     32import javax.xml.bind.Unmarshaller; 
    3033import javax.xml.transform.Source; 
    3134import javax.xml.transform.Templates; 
     
    134137        /** 
    135138         * Convenience method to create a WordprocessingMLPackage 
    136          * from an existing File. 
     139         * from an existing File (.docx zip or .xml Flat OPC). 
    137140     * 
    138141         * @param docxFile 
     
    140143         */      
    141144        public static WordprocessingMLPackage load(java.io.File docxFile) throws Docx4JException { 
     145                 
     146                if (docxFile.getName().endsWith(".xml")) { 
     147                         
     148                        org.docx4j.convert.in.FlatOpcXmlImporter xmlPackage; 
     149                        try { 
     150                                Unmarshaller u = Context.jcXmlPackage.createUnmarshaller(); 
     151                                u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 
     152 
     153                                org.docx4j.xmlPackage.Package wmlPackageEl = (org.docx4j.xmlPackage.Package)((JAXBElement)u.unmarshal( 
     154                                                new javax.xml.transform.stream.StreamSource(new FileInputStream(docxFile.getAbsolutePath())))).getValue();  
     155 
     156                                xmlPackage = new org.docx4j.convert.in.FlatOpcXmlImporter( wmlPackageEl); 
     157                        } catch (Exception e) { 
     158                                log.error(e); 
     159                                throw new Docx4JException("Couldn't load xml from " + docxFile.getAbsolutePath(), e); 
     160                        }  
     161                        return (WordprocessingMLPackage)xmlPackage.get();  
     162                } 
    142163                 
    143164//              LoadFromZipFile loader = new LoadFromZipFile(); 
     
    148169                        fis = new FileInputStream(docxFile); 
    149170                } catch (FileNotFoundException e) { 
    150                         e.printStackTrace(); 
     171                        log.error(e); 
     172                        throw new Docx4JException("Couldn't load docx from " + docxFile.getAbsolutePath(), e); 
    151173                } 
    152174                return (WordprocessingMLPackage)loader.get(fis); 
     
    383405                 
    384406                 
    385                 Map<String, Object> getSettings() { 
     407                public Map<String, Object> getSettings() { 
    386408                        Map<String, Object> settings = new java.util.HashMap<String, Object>(); 
    387409                         
Note: See TracChangeset for help on using the changeset viewer.