diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java index 6c816be79c8941dc866628c3b9ee0ebe4f3df79a..c45f6823f84ee9806aa284cceb497ef862a194eb 100644 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java @@ -22,28 +22,15 @@ import de.ozgcloud.eingang.common.formdata.IncomingFile; public class XdomeaXMLValueReader { private static final String DATEINAME_NODE_QUERY_STRING = "//Hauptobjekt//Dateiname"; - private static final XPathExpression DATEINAME_NODE_QUERY = compileXPathExpression(DATEINAME_NODE_QUERY_STRING); - - // Query für XML-Dateien in Anlagen - // Siehe auch https://www.xrepository.de/details/urn:xoev-de:xdomea:kosit:standard:xdomea - // und https://www.xrepository.de/details/urn:xoev-de:xdomea:codeliste:dateiformat - public static final String ANLAGE_NODE_QUERY_DFOERDER = "//Anlage//Format/Name[@listURI='urn:xoev-de:xdomea:codeliste:dateiformat']/code[.='030']/../..//Dateiname"; - public static final String ANLAGE_NODE_QUERY_AFM = "//Anlage//Format/Name[substring(., 1, 3)='030']/..//Dateiname"; - public static final String ANLAGE_NODE_QUERY_STRING = ANLAGE_NODE_QUERY_DFOERDER + " | " + ANLAGE_NODE_QUERY_AFM; - private static final XPathExpression ANLAGE_NODE_QUERY = compileXPathExpression(ANLAGE_NODE_QUERY_STRING); + // Interpret XML-Attachments as representations + // XML filetype code: 030 (see https://www.xrepository.de/details/urn:xoev-de:xdomea:codeliste:dateiformat) + private static final String DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING = "//Anlage//Format/Name[contains(., '030')]/..//Dateiname"; + private static final XPathExpression DATEINAME_NODE_QUERY = compileXPathExpression( + DATEINAME_NODE_QUERY_STRING + "|" + DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING); public List<String> readRepresentationFileNames(IncomingFile xdomeaXMLFile) { var parsedXML = XMLHelper.parseDocument(xdomeaXMLFile).getDocumentElement(); - return Stream.concat( - getTextsFromNodes( - queryDateinameNodeList( - parsedXML - )), - getTextsFromNodes( - queryAnlageNodeList( - parsedXML - )) - ).toList(); + return getTextsFromNodes(queryDateinameNodeList(parsedXML)).toList(); } private NodeList queryDateinameNodeList(Element contextElement) { @@ -58,18 +45,6 @@ public class XdomeaXMLValueReader { } } - private NodeList queryAnlageNodeList(Element contextElement) { - try { - return (NodeList) ANLAGE_NODE_QUERY - .evaluate( - contextElement, - XPathConstants.NODESET - ); - } catch (XPathExpressionException e) { - throw new TechnicalException("Failed to execute xpath search!", e); - } - } - private Stream<String> getTextsFromNodes(NodeList nodeList) { return streamNodeList(nodeList) .map(Node::getTextContent)