J'ai travaillé sur un module Java pour transformer les XML au cours des derniers mois. Il est supposé prendre une demande de savon et remplir l'élément soap: header avec des éléments supplémentaires d'un référentiel de métadonnées, par exemple. Le module devrait être universellement implémentable dans n'importe quel middleware (mon système natif est SAP PI).IBM Integration Bus Java Nœud de calcul: sortie d'un w3c.dom.Document ou d'une chaîne
Maintenant, je suis chargé d'implémenter ce module en tant que jar dans un noeud JavaCompute dans IBM Integration Bus. Le problème est que pour exporter le XML résultant j'ai besoin d'obtenir les données dans le outMessage du JavaCompute Node. Cependant, je n'ai pas trouvé un moyen de convertir un org.w3c.com.Document en MbElement ou d'insérer le document ou son contenu dans le MbElement. En fait, je ne voyais aucun moyen de mettre quelque chose dedans (pas même une chaîne XML) sans utiliser l'API IBM comme prévu, donc je devrais écrire du code qui lit mon document déjà fini et construit un MbElement à partir de cela.
Cela ressemble à ce qui suit:
public void evaluate(MbMessageAssembly inAssembly) throws MbException {
MbOutputTerminal out = getOutputTerminal("out");
MbOutputTerminal alt = getOutputTerminal("alternate");
MbMessage inMessage = inAssembly.getMessage();
// create new empty message
MbMessage outMessage = new MbMessage();
MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,
outMessage);
try {
// optionally copy message headers
// copyMessageHeaders(inMessage, outMessage);
// ----------------------------------------------------------
// Add user code below
//Create an example output Document
String outputContent = "<element><subelement>Value</subelement></element>";
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(outputContent));
Document outDocument = db.parse(is);
//Get the Document or its content into the outRoot or outMessage somehow.
MbElement outRoot = outMessage.getRootElement();
//Start to iterate over the Document and use Methods like this to build up the MbElement?
MbElement outBody = outRoot.createElementAsLastChild("request");
// End of user code
} catch (MbException e) { ...
Quelle est votre question? Vous avez raison, vous pouvez uniquement accéder à l'arborescence des messages sortants avec l'API IBM. –
La question était de savoir si je peux d'une certaine façon ne pas le faire moi-même et de convertir le DOM en quelque chose que l'outMessage peut gérer et comment le mettre dans le message. Siarheib a probablement la bonne réponse, je l'ai testé ATM. –