From 77665936eda15b5d90c6889015f7ccedc32d8d56 Mon Sep 17 00:00:00 2001 From: "Andreas Penski (init)" Date: Fri, 8 Feb 2019 10:46:09 +0100 Subject: [PATCH] (fix) finde den richtigen root-Knoten --- .../validationtool/impl/ScenarioRepository.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/kosit/validationtool/impl/ScenarioRepository.java b/src/main/java/de/kosit/validationtool/impl/ScenarioRepository.java index f43b43e..6bf9a17 100644 --- a/src/main/java/de/kosit/validationtool/impl/ScenarioRepository.java +++ b/src/main/java/de/kosit/validationtool/impl/ScenarioRepository.java @@ -23,6 +23,7 @@ import static org.apache.commons.lang3.StringUtils.startsWith; import java.net.MalformedURLException; import java.net.URI; +import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @@ -44,6 +45,7 @@ import net.sf.saxon.s9api.QName; import net.sf.saxon.s9api.SaxonApiException; import net.sf.saxon.s9api.XPathSelector; import net.sf.saxon.s9api.XdmNode; +import net.sf.saxon.s9api.XdmNodeKind; import net.sf.saxon.s9api.XsltExecutable; /** @@ -72,12 +74,23 @@ public class ScenarioRepository { private Scenarios scenarios; private static boolean isSupportedDocument(XdmNode doc) { - final XdmNode root = doc.children().iterator().next(); + final XdmNode root = findRoot(doc); final String frameworkVersion = root.getAttributeValue(new QName("frameworkVersion")); return startsWith(frameworkVersion, SUPPORTED_MAJOR_VERSION) && root.getNodeName().getNamespaceURI().equals(SUPPORTED_MAJOR_VERSION_SCHEMA); } + private static XdmNode findRoot(final XdmNode doc) { + final Iterator it = doc.children().iterator(); + while (it.hasNext()) { + final XdmNode node = it.next(); + if (node.getNodeKind() == XdmNodeKind.ELEMENT) { + return node; + } + } + throw new IllegalArgumentException("Kein root element gefunden"); + } + private static void checkVersion(URI scenarioDefinition) { DocumentParseAction p = new DocumentParseAction(); try {