過去幾個月來,我一直在研究Java模塊以轉換XML。例如,它應該接受一個soap請求並使用元數據存儲庫中的其他元素填充soap:header元素。該模塊應該普遍適用於任何中間件(我的本機系統是SAP PI)。IBM Integration Bus Java計算節點:輸出w3c.dom.Document或字符串
現在我的任務是將此模塊作爲jar實現到IBM Integration Bus中的JavaCompute節點中。問題是導出生成的XML我需要將數據導入JavaCompute節點的outMessage。但是,我沒有找到將org.w3c.com.Document轉換爲MbElement或將文檔或其內容插入MbElement的方法。
實際上,我沒有看到任何方法可以根據需要使用IBM API,所以我必須編寫代碼讀取已經完成的Document並構建MbElement(甚至不是XML字符串)從中。
這看起來如下:
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) { ...
你有什麼問題嗎?您是正確的,只能通過IBM API訪問傳出消息樹。 –
問題是如果我能以某種方式自己不這樣做,並將DOM轉換爲outMessage可以處理的東西以及如何將它放入消息中。 siarheib可能有正確的答案,我正在測試它的ATM。 –