private List<ParserElement> idReferenceElements = new ArrayList<ParserElement>();
- private void loadElement(Deque<ParserElement> parents, ParserElement element) throws SAXException{
- loadElement(parents, element, true);
+ private boolean loadElement(Deque<ParserElement> parents, ParserElement element) throws SAXException{
+ return loadElement(parents, element, true);
}
- private void loadElement(Deque<ParserElement> parents, ParserElement element, boolean checkParent) throws SAXException{
+ private boolean loadElement(Deque<ParserElement> parents, ParserElement element, boolean checkParent) throws SAXException{
XMLElementParser parser = null;
ParserElement parent = null;
if (parents.size() > 0) {
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
if (parser instanceof IDReferenceParser)
idReferenceElements.add(element);
element.setElementParser(parser);
+ return true;
} catch (DatabaseException e) {
throw new SAXException(e);
}
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();
logger.log(new Status(IStatus.ERROR, PLUGIN_ID, err));
if (debug) System.err.println(err);
+ return false;
}
}
}
done();
}
+ public XMLElementParser getParser(String elementId) {
+ return parsers.get(elementId);
+ }
+
+ public void setParser(String elementId, XMLElementParser p) {
+ parsers.put(elementId, p);
+ }
+
+
}
\ No newline at end of file