Kamel: wie manipulieren output message/set header basiert auf xpath-Ausdruck
Ich versuche, dynamisch zu erstellen, die einen Erholsamen URL basierend auf der eingehenden XML:
Eingang:
<message>
<request name="John"/>
</message>
Möchte ich route es so:
http://myhost:8080/myservice?name=John
Ich wissen, wie man URL-Parameter mit setHeader aber ich weiß nicht, wie extrahieren Sie die Werte der attribute aus der Eingabe-Nachricht. Die SOOPER_XPATH Ausdruck, den ich Suche, könnte wie folgt Aussehen:
from("direct:start")
.setHeader(Exchange.HTTP_QUERY,
simple("name=$SOOPER_XPATH(${in.body}, '//request/@name')")
.to("http://myhost:8080/myservice").log("Received response: ${in.body});
- haben Sie versucht, diese XPath :
'//request/@name'
? - In der Tat tThe xpath im snippet hatte einen Tippfehler, //request@Namen anstelle der //Anfrage/@name, sorry. Aber mein problem ist nicht mit dem xpath-Ausdruck.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es wahrscheinlich mehrere Möglichkeiten, es zu tun, das ist, was wir tun, in einem meiner Projekte, die gut funktioniert:
Wir tun dies innerhalb eines Prozessors, aber Sie könnte wahrscheinlich verwenden Sie die XPathBuilder direkt in die route als gut.
Es ist wirklich nur eine Frage der xpath-Recht. Normalerweise verwende ich einige Tools wie http://www.xpathtester.com/xpath zum testen meiner XPath-Ausdrücken.
Ist, um die header in der route außerhalb der
Processor
verwenden: