X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax.base%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2Fbase%2FXMLParser.java;fp=org.simantics.xml.sax.base%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2Fbase%2FXMLParser.java;h=44530c00c968095ac0f0701e63ef469f085e4d73;hb=5985d5ea605049222dc5a4acb0accf77afd8f76f;hp=3d708f4842f729ea4f58bf5a76041524a3420242;hpb=8c7637425667bd9710be0fe6afe437050fea59b7;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java index 3d708f4..44530c0 100644 --- a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java +++ b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java @@ -100,10 +100,10 @@ public class XMLParser extends DefaultHandler implements Serializable { private List idReferenceElements = new ArrayList(); - private void loadElement(Deque parents, ParserElement element) throws SAXException{ - loadElement(parents, element, true); + private boolean loadElement(Deque parents, ParserElement element) throws SAXException{ + return loadElement(parents, element, true); } - private void loadElement(Deque parents, ParserElement element, boolean checkParent) throws SAXException{ + private boolean loadElement(Deque parents, ParserElement element, boolean checkParent) throws SAXException{ XMLElementParser parser = null; ParserElement parent = null; if (parents.size() > 0) { @@ -113,8 +113,8 @@ public class XMLParser extends DefaultHandler implements Serializable { if (checkParent && parent.getXMLParser() != null && parent.getXMLParser() != this) { //element.setXMLParser(parent.getXMLParser()); element.setXMLParser(parent.getXMLParser()); - parent.getXMLParser().loadElement(parents, element); - return; + if (parent.getXMLParser().loadElement(parents, element)) + return true; } if (parent.getElementParser() instanceof XMLElementNamedChildParser) { // use parent's named child parser if it is supported @@ -150,6 +150,7 @@ public class XMLParser extends DefaultHandler implements Serializable { if (parser instanceof IDReferenceParser) idReferenceElements.add(element); element.setElementParser(parser); + return true; } catch (DatabaseException e) { throw new SAXException(e); } @@ -159,12 +160,14 @@ public class XMLParser extends DefaultHandler implements Serializable { String nsRef[] = element.getQName().split(":"); if (schemaRef != null && subParsers.containsKey(schemaRef.value)) { XMLParser subParser = subParsers.get(schemaRef.value); - subParser.loadElement(parents, element); + boolean b = subParser.loadElement(parents, element); element.setXMLParser(subParser); + return b; } else if (nsRef.length == 2 && element.getNS(nsRef[0]) != null && subParsers.containsKey(element.getNS(nsRef[0]))) { XMLParser subParser = subParsers.get(element.getNS(nsRef[0])); - subParser.loadElement(parents, element, false); + boolean b = subParser.loadElement(parents, element, false); element.setXMLParser(subParser); + return b; } else { if (parent == null && parents.size() > 0) parent = parents.peek(); @@ -178,6 +181,7 @@ public class XMLParser extends DefaultHandler implements Serializable { logger.log(new Status(IStatus.ERROR, PLUGIN_ID, err)); if (debug) System.err.println(err); + return false; } } }