Changeset 24863 for main/trunk


Ignore:
Timestamp:
2011-12-06T13:01:02+13:00 (12 years ago)
Author:
sjm84
Message:

XMLConverter no longer keeps one converter around to reuse, it makes a new one every time, this is to avoid an error where the parser is called whilst it is already parsing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/XMLConverter.java

    r24862 r24863  
    6464    static Logger logger = Logger.getLogger(org.greenstone.gsdl3.util.XMLConverter.class.getName());
    6565
     66    protected EntityResolver resolver = null;
     67   
    6668    /** xerces parser */
    6769    protected DOMParser parser = null;
     
    9698    public void setEntityResolver(EntityResolver er)
    9799    {
     100        this.resolver = er;
    98101        this.parser.setEntityResolver(er);
    99102    }
     
    138141            InputSource xml_source = new InputSource(reader);
    139142
    140             this.parser.parse(xml_source);
    141             Document doc = this.parser.getDocument();
     143            DOMParser parser = new DOMParser();
     144            parser.setFeature("http://xml.org/sax/features/validation", false);
     145            parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
     146            parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion", false);
     147            if(resolver != null)
     148            {
     149                parser.setEntityResolver(this.resolver);
     150            }
     151            parser.setErrorHandler(new ParseErrorHandler());
     152            parser.parse(xml_source);
     153           
     154            Document doc = parser.getDocument();
    142155
    143156            return doc;
     
    158171            FileReader reader = new FileReader(in);
    159172            InputSource xml_source = new InputSource(reader);
    160             this.parser.parse(xml_source);
    161             Document doc = this.parser.getDocument();
     173           
     174            DOMParser parser = new DOMParser();
     175            parser.setFeature("http://xml.org/sax/features/validation", false);
     176            parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
     177            parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion", false);
     178            if(resolver != null)
     179            {
     180                parser.setEntityResolver(this.resolver);
     181            }
     182            parser.setErrorHandler(new ParseErrorHandler());
     183            parser.parse(xml_source);
     184           
     185            Document doc = parser.getDocument();
    162186            return doc;
    163187
     
    180204            InputSource xml_source = new InputSource(isr);
    181205
    182             this.parser.parse(xml_source);
    183             Document doc = this.parser.getDocument();
     206            DOMParser parser = new DOMParser();
     207            parser.setFeature("http://xml.org/sax/features/validation", false);
     208            parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
     209            parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion", false);
     210            if(resolver != null)
     211            {
     212                parser.setEntityResolver(this.resolver);
     213            }
     214            parser.setErrorHandler(new ParseErrorHandler());
     215            parser.parse(xml_source);
     216           
     217            Document doc = parser.getDocument();
    184218
    185219            return doc;
Note: See TracChangeset for help on using the changeset viewer.