Ich habe eine Camel-Route, die ein XML zurückgibt, und um die Ausgabe testen zu können, habe ich einen JUnit-Test geschrieben welches mit SpringRunner läuft. Dort erhalte ich den XML-Stream von der Börse, den ich gegen eine XSD validiere. Das funktioniert großartig, weil das XSD eine Ausnahme auslöst, weil das Ausgabe-XML nicht gültig ist, aber ich verstehe nicht, warum die folgende XQuery ein Element mit EMPTY NAMESPACE generiert? mehr Code bereitstellen):
Code: Select all
declare default element namespace "http://www.dppgroup.com/XXXPMS";
let $cmmdoc := $doc/*:cmmdoc
, $partner := $doc/*:cmmdoc/*:information/*:partner_gruppe/*:partner
, $sequence:= fn:substring($cmmdoc/@unifier,3)
return
{
for $x in $partner
where $x[@partnerStatusCode = " "]
return
element {"DataGroup" } {
}
}
Code: Select all
Code: Select all
String xml = TestDataReader.readXML("/input/info/info_in.xml", PROJECT_ENCODING);
quelle.sendBody(xml);
boolean valid = false;
try {
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream((byte[]) archiv.getExchanges().get(1).getIn().getBody());
Document document = documentBuilder.parse(byteArrayInputStream);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(document);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
System.out.println(xmlString);