diff --git a/src/main/java/sirius/biz/jobs/batch/file/XMLImportJob.java b/src/main/java/sirius/biz/jobs/batch/file/XMLImportJob.java index 259274dce..8cbcd1947 100644 --- a/src/main/java/sirius/biz/jobs/batch/file/XMLImportJob.java +++ b/src/main/java/sirius/biz/jobs/batch/file/XMLImportJob.java @@ -18,7 +18,9 @@ import sirius.kernel.commons.Strings; import sirius.kernel.di.std.Part; import sirius.kernel.health.Exceptions; +import sirius.kernel.xml.NoContentNodeHandler; import sirius.kernel.xml.NodeHandler; +import sirius.kernel.xml.StructuredNode; import sirius.kernel.xml.XMLReader; import sirius.web.resources.Resource; import sirius.web.resources.Resources; @@ -126,15 +128,28 @@ protected Resource getXsdResource() throws Exception { protected void executeProcessingStage(InputStream in, Consumer> stage) throws Exception { XMLReader reader = new XMLReader(); - stage.accept((name, originalHandler) -> { - reader.addHandler(name, structuredNode -> { - if (importer.getContext().getEventDispatcher().isActive()) { - AfterNodeLoadEvent event = new AfterNodeLoadEvent(structuredNode, importer.getContext()); - importer.getContext().getEventDispatcher().handleEvent(event); + if (importer.getContext().getEventDispatcher().isActive()) { + stage.accept((name, originalHandler) -> { + if (originalHandler.ignoreContent()) { + reader.addHandler(name, new NoContentNodeHandler() { + @Override + public void process(StructuredNode node) { + AfterNodeLoadEvent event = new AfterNodeLoadEvent(node, importer.getContext()); + importer.getContext().getEventDispatcher().handleEvent(event); + originalHandler.process(node); + } + }); + } else { + reader.addHandler(name, node -> { + AfterNodeLoadEvent event = new AfterNodeLoadEvent(node, importer.getContext()); + importer.getContext().getEventDispatcher().handleEvent(event); + originalHandler.process(node); + }); } - originalHandler.process(structuredNode); }); - }); + } else { + stage.accept(reader::addHandler); + } reader.parse(in, this::resolveResource); }